OpenAI-Translator大模型应用二次开发

最近在极客时间学习《AI 大模型应用开发实战营》,自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator,在这里简单记录下开发过程和心得体会,供有兴趣的同学参考:
 

V1.0项目实现的功能

  • 支持PDF文件格式解析
  • 支持英文翻译成中文
  • 支持OpenAI和ChatGLM模型
  • 通过yaml文件或命令行参数进行配置

其中PDF文件的解析是通过开源代码库pdfplumber实现的,可以读取出输入的pdf文件的元数据,以及页面对象,然后在针对页面对象,调用相应方法,可以解析出的文本数据和表格数据。

而英文翻译成中文的过程主要通过调用大模型来实现,其中prompt的设计是重中之重,决定了翻译的效果。

V2.0 实现的功能

  • 在大模型的调用方面,支持了Claude-API的调用

        Claude-API虽然官方没有正式公布,但是开源社区的贡献者最新提供了代码包,以实现通过api和Claude大模型对话

        首先,需要查看并拷贝出来网页端访问的cookie

Screenshot (8)

        并依据cookie,初始化Client (Client为代码库claude_api.py中声明的类)

claude_api = Client(cookie)

        然后根据prompt和conversation_id参数,就可以和Claude大模型进行对话

prompt = "<Your prompt content>"
conversation_id = "<conversation_id>" or claude_api.create_new_chat()['uuid']
response = claude_api.send_message(prompt, conversation_id)
print(response)

        由此在项目代码中,我们新建了一个claude_model.py

class ClaudeModel(Model):
    def __init__(self, cookie):
        self.cookie = cookie
        self.claude_api = Client(cookie)
        self.model = "claude"

    def make_request(self, sys_prompt, user_prompt, conversation_id):
        attempts = 0
        prompt = sys_prompt + user_prompt
        while attempts < 3:
            try:
                if self.model == 'claude':
                    response = self.claude_api.send_message(prompt, conversation_id)
                    # translation = response.func()
                return response, True
            except requests.exceptions.RequestException as e:
                raise Exception(f"请求异常:{e}")
            except requests.exceptions.Timeout as e:
                raise Exception(f"请求超时:{e}")
            except Exception as e:
                raise Exception(f"发生了未知错误:{e}")
        return "", False

并在main.py中支持对ClaudeModel的初始化和调用

cookie = '<Your cookie>'

# model = OpenAIModel(model=model_name, api_key=api_key) # 调用GPT模型
model = ClaudeModel(cookie)  # 调用Claude模型

  • prompt设计方面,加入了system message,并支持更据翻译内容的领域特性,灵活地赋予相应角色

在V1.0版本的基础上,丰富了prompt信息

def make_text_prompt(self, text: str, target_language: str) -> str:
        return f"Your task is to provide a clear and concise translation that accurately conveys the meaning of the original text {text}, tailored to the intended {target_language} audience. \
        Please be sure to accurately translate any specific terms or jargon. "
    
def make_table_prompt(self, table: str, target_language: str) -> str:
        return f"Your task is to provide a clear and concise translation that accurately conveys the meaning of the original text in the given table \n{table} into {target_language}  \
                and output the translation result with the same tabular format, maintaining the rows, columns and spacings "

def make_sys_prompt(self, role:str) -> str:
        return f"As a distinguished {role}, you specialize in accurately and appropriately translating texts into any language, meticulously considering all linguistic complexities and nuances."

在system message中可以根据不同的领域,传入不同的角色作为参数,默认设置为 multilingual scholar and expert translator,还根据需要指明领域,如history expert等

由于token上限等原因,采用一个实例来检验效果 

 

 

  • 利用gradio构建可视化界面

def launch_gradio():

    iface = gr.Interface(
        fn=translation,
        title="OpenAI-Translator v2.0(PDF 电子书翻译工具)",
        inputs=[
            gr.File(label="上传PDF文件"),
            gr.Textbox(label="源语言(默认:英文)", placeholder="English", value="English"),
            gr.Textbox(label="目标语言(默认:中文)", placeholder="Chinese", value="Chinese"),
            gr.Textbox(label="文本类型(默认:文学)", placeholder="Chinese", value="Literature")
        ],
        outputs=[
            gr.File(label="下载翻译文件")
        ],
        allow_flagging="never"
    )

    iface.launch(share=True, server_name="0.0.0.0")

效果如图所示

我们从BBC news中选取了一段时间为一分钟的新闻稿用作测试,新闻文本如下:

在翻译的prompt中,提示模型在处理人名时,如果不确定译法,可以保留为源语言的形式,翻译效果,如下图所示

可见人名虽然保持了,但其他专有名词如abaya,在新闻网站的翻译中,被译为“长袍”,而模型将其翻译为音译的阿巴亚,可见还可以对其他专有名词的处理做更多考虑,以及用专业的新闻语料知识库做相应的微调

参考资料

[1] GitHub - KoushikNavuluri/Claude-API: This project provides an unofficial API for Claude AI, allowing users to access and interact with Claude AI .

[2] https://flowgpt.com/?searchQuery=book+pdf+translation

[3] AI Prompt Generator | AI Mind

[4] https://github.com/gradio-app/gradio

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: OpenAI Translator是一款强大的翻译软件,可用于翻译文本、语音和图片。其桌面版可以安装在电脑上,随时随地进行语言翻译,无需连接互联网。 桌面版的OpenAI Translator有非常简洁的界面,在使用时非常方便。用户只需将需要翻译的文本或上传图片或录制音频,并选择目标语言,OpenAI Translator即可自动进行翻译。 与其他翻译软件相比,OpenAI Translator具有更高的翻译质量和准确性。它使用了强大的机器学习和人工智能技术,能够更好的理解语言中的语意和表达方式,从而实现更加精准地翻译。此外,桌面版还支持多种语言,用户可以根据自己的需求进行选择。 总体来说,OpenAI Translator是一款功能强大的翻译软件,其桌面版更是提供了更加便捷的使用体验。如果您需要进行跨语言的交流和沟通,OpenAI Translator绝对是您不可或缺的助手。 ### 回答2: OpenAI Translator 桌面版是一种集成了机器翻译技术的桌面应用程序,它采用了最新的深度学习技术,通过卷积神经网络(CNN)和循环神经网络(RNN)实现了高质量的翻译效果。它支持多种语言之间的翻译,包括但不限于英语、中文、法语、德语、西班牙语、俄语、日语、韩语等等。用户可以通过直接输入文字、上传文档或选择网页链接的方式进行翻译。OpenAI Translator 桌面版还可以对翻译结果进行实时修改和优化,并提供了相应的注释功能。除此之外,它还支持离线翻译,用户可以在没有网络的条件下进行翻译,大大增加了应用的灵活性和适用范围。总的来说,OpenAI Translator 桌面版是一款功能强大、易于使用、翻译效果优秀的机器翻译应用程序,为用户提供了全方位的翻译服务,将语言之间的交流变得更加便捷和高效。 ### 回答3: OpenAI Translator桌面版是一款强大的机器翻译软件,它使用人工智能技术,能够翻译多种语言,并提供语音翻译功能。这款软件可以帮助用户更加轻松地沟通交流,帮助用户在不同语言环境下更好地工作和生活。 OpenAI Translator桌面版的特点在于使用了最先进的机器翻译技术,这使得翻译结果更加准确和流畅。用户可以选择多种语言和语音,包括中文、英文、日文、法语、德语等多种语言,帮助用户轻松实现多语言交流。 除了语言和语音功能外,OpenAI Translator桌面版还提供了多种翻译工具,帮助用户更好地管理翻译内容。用户可以自由设置翻译颜色、字体、格式等,以满足不同需求。此外,这款软件还提供了多种翻译搜索功能,帮助用户快速查找需要翻译的内容。 总之,OpenAI Translator桌面版是一款优秀的机器翻译软件,它可以帮助用户更加轻松地进行多语言交流,并提供了许多实用的翻译工具,让翻译变得更加简单和高效。无论是学习、工作还是旅游,这款软件都能为用户提供极大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值