欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 本地大模型编程实战(01)实现翻译功能

本地大模型编程实战(01)实现翻译功能

2025/2/24 10:36:32 来源:https://blog.csdn.net/liupras/article/details/145347504  浏览:    关键词:本地大模型编程实战(01)实现翻译功能

这里写自定义目录标题

    • 准备
    • 使用本地大语言模型
    • 翻译测试
    • 流式输出
    • 提示词模板
    • 代码

大语言模型的主要功能是预测:输入一些字符串,它预测输出另一些字符串,这个特点使它擅长翻译。

本文描述了如何使用大语言模型(LLM)实现基本的翻译功能,此翻译功能的特点是:无需指定源语言,只需要指定目标语言就可以进行翻译了

准备

在正式开始撸代码之前,需要准备一下编程环境。

  1. 计算机
    本文涉及的所有代码可以在没有显存的环境中执行。 我使用的机器配置为:

    • CPU: Intel i5-8400 2.80GHz
    • 内存: 16GB
  2. Visual Studio Code 和 venv
    这是很受欢迎的开发工具,相关文章的代码可以在 Visual Studio Code 中开发和调试。 我们用 pythonvenv 创建虚拟环境, 详见:
    在Visual Studio Code中配置venv。

  3. Ollama
    Ollama 平台上部署本地大模型非常方便,基于此平台,我们可以让 langchain 使用 llama3.1qwen2.5 等各种本地大模型。详见:
    在langchian中使用本地部署的llama3.1大模型 。

使用本地大语言模型

from langchain_ollama.llms import OllamaLLM
model = OllamaLLM(model="llama3.1")

llama3.1 支持多语言,适合一般性任务。langchain也支持很多其它平台和模型,详见:Chat models 。

翻译测试

ChatModelLangChain Runnable 的实例,这意味着它们公开了一个用于与它们交互的标准接口。我们用 .invoke 方法即可简单的调用模型。

def translate_1(text):"""将文字翻译为意大利语"""messages = [SystemMessage("Translate the following from English into Italian"),HumanMessage(text),]return model.invoke(messages)

我们现在可以调用上述方法,测试一下大模型的能力。

if __name__ == '__main__':response = translate_1("Hello, how are you?")print(response)
Ciao! Come stai? (Hello! How are you?)

langchain 还支持用其它的格式作为invoke的参数,例如:model.invoke("Hello")等价于:

model.invoke([{"role": "user", "content": "Hello"}])model.invoke([HumanMessage("Hello")])

流式输出

因为聊天模型是 Runnable,所以它们公开了一个包含异步和流调用模式的标准接口stream,我们用它把翻译方法改造一下:

def translate_1_stream(text):"""将文字翻译为意大利语"""messages = [SystemMessage("Translate the following from English into Italian"),HumanMessage(text),]for token in model.stream(messages):yield token

我们可以调用一下此方法:

for token in translate_1_stream("Hello, how are you?"):print(token, end="|")
C|iao|,| come| st|ai|?||

流式输出的好处是:大模型返回的数据可以"一点一点"的返回来。
当大模型响应比较慢时,可以让用户便等待边看到结果,很友好;另外,在后面练习比较复杂的 Agent 时,也可以通过 stream 调用看到调用过程,便于调试。

提示词模板

我们通过提示词模板构建比较复杂一点的提示词,它有两个参数:

  • language: 将文本翻译成的语言
  • text: 被翻译的文本
    然后我们再调用提示词模板的 invoke 方法初始化提示词。
# 1. system提示词
def translate_2(text,language):"""用提示词模板构建提示词,翻译文字"""# 1. system提示词system_template = "Translate the following from English into {language}"# 2. 提示词模板prompt_template = ChatPromptTemplate.from_messages([("system", system_template), ("user", "{text}")])# 3. 调用invoke构建提示词prompt = prompt_template.invoke({"language": language, "text": text})print(prompt.to_messages())response = model.invoke(prompt)return response

请注意,ChatPromptTemplate 在单个模板中支持多种消息角色。在本例中,我们将 language 参数格式化为系统消息,将 text 格式化为用户消息。
我们调用一下这个方法,看看输出效果:

response = translate_2("First up, let's learn how to use a language model by itself.","Chinese")
print(response)
让我们先学习如何使用语言模型。

代码

  • github
  • gitee

🪐祝好运🪐

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词