【Flask + AI】接入CHATGLM API 实现翻译接口

news/2024/12/21 22:58:30/

【Flask + AI】接入CHATGLM API 实现翻译接口

最近的项目中,需要加一个翻译功能,正好chatglm4发布了,于是决定着手用它实现。

https://chatglm.cn

准备

首先,在chatglm开发者中心申请api key,这里不再赘述
其次,选择自己的开发框架,这里以 flask 为例

提示词

要实现翻译功能,一个优良的提示词十分重要。
经过多次测试,得到了这样一个较为稳定的提示词。

prompt_translation = """zh-en translation of "input".Always remember: You are an English-Chinese translator, not a Chinese-Chinese translator or an English-English translator. Your output should only contains Chinese or English!You should Always just do the translate part and do not change its meaning! example1:input:"write me a poem",output:"帮我写一首诗"example2:input:"你好世界",output:"hello world"Now I will give you my input:
"""

这个Prompt实现了中英互译,注意,这两个例子非常重要,如果没有,模型可能会永远输出英文或者中文。在调用api时,把这个提示词设置为 assistant 可以减小模型把这段话认为是指令的概率。

接口代码

@glm_blueprint.route('/api/glmTranslation', methods=['POST'])
def translation():user_content = request.json.get('user-content')if not user_content:return jsonify({'error': 'No user-content provided'}), 400contentPrompt = prompt_translationcompletion = client.chat.completions.create(model='glm-4',messages=[{"role": "system", "content": contentPrompt},{"role": "assistant", "content": user_content}],max_tokens=200,temperature=0.1,)# 将 ChatCompletionMessage 对象转换为可序列化的格式response_message = completion.choices[0].message.content if completion.choices[0].message else "No response"return jsonify({"response": response_message})
  • role 设置为 assistant 或 user 效果会不同
  • 模型可以自己更改,glm-4目前效果最好
  • 如果要节省token,可以限制max_token

http://www.ppmy.cn/news/1346710.html

相关文章

C#静态数组删除数组元素不改变数组长度 vs 动态数组删除数组元素改变数组长度

目录 一、使用的方法 1.对静态数组删除指定长度并不改变数长度的方法 (1)静态数组 (2)对静态数组删除元素不得改变其长度 2.对动态数组删除指定长度并改变数长度的方法 (1)动态数组 (2&a…

RAPTOR:树组织检索的递归抽象处理

RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL Title:树组织检索的递归抽象处理 https://arxiv.org/pdf/2401.18059.pdf 摘要 检索增强语言模型可以更好的融入长尾问题,但是现有的方法只检索短的连续块,限制了整…

BUGKU-WEB 留言板

题目描述 题目无需登录后台!需要xss平台接收flag, http协议需要http协议的xss平台打开场景后界面如下: 解题思路 看到此类的题目,应该和存储型xss有关,也就是将恶意代码保存到服务器端即然在服务器端,那就…

华为第二批难题一:基于预训练AI模型的元件库生成

我的理解:华为的这个难道应该是想通过大模型技术,识别元件手册上的图文内容,与现有建库工具结合,有潜力按标准生成各种库模型。 正好,我们正在研究,利用知识图谱技术快速生成装配模型,其中也涉…

【Ubuntu】安装filebeat

在Ubuntu系统上安装filebeat 1. 添加ElasticSearch的GPG密钥 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -2. 添加ElasticSearch的APT存储库 echo "deb https://artifacts.elastic.co/packages/oss-8.x/apt stable main"…

17:定时器编程实战

1、实验目的 (1)使用定时器来完成LED闪烁 (2)原来实现闪烁时中间的延迟是用delay函数实现的,在delay的过程中CPU要一直耗在这里不能去做别的事情。这是之前的缺点 (3)本节用定时器来定一个时间(譬如0.3s),在这个定时器定时时间内…

单片机无线发射的原理剖析

目录 一、EV1527编码格式 二、OOK&ASK的简单了解 三、433MHZ 四、单片机的地址ID 五、基于STC15W104单片机实现无线通信 无线发射主要运用到了三个知识点:EV1527格式;OOk;433MHZ。下面我们来分别阐述: EV1527是数据的编…

【C++】C++的简要介绍

简单不先于复杂,而是在复杂之后。 文章目录 1. 什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 3.3.3 面试题 4. 如何学习C4.1 别人怎么学? 1. 什么是C C语言是结构化和模块化的语言&…