LangChain + OllamaLLM 教程:使用 Python 调用本地大模型
在本教程中,我们将学习如何使用 LangChain 框架调用 OllamaLLM(本地大模型 API),并实现一个简单的聊天机器人。
1. 环境准备
在开始之前,请确保你已经安装了 Python 3.8+,并且安装了以下依赖库:
如果你尝试用 Python 3.7 或更低版本 运行 LangChain + OllamaLLM,可能会遇到:
❌ 模块无法导入 (ImportError
)
❌ 语法错误(SyntaxError
)
❌ 某些方法或类不可用
pip install langchain
pip install langchain-core langchain-ollama
如果你的 Ollama 还没有安装,可以参考 Ollama 官方文档 【https://ollama.com/ 】进行安装和配置。
2. 代码实现
创建一个 Python 文件,例如 chatbot.py
,然后复制以下代码:
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama.llms import OllamaLLM
# 创建 OllamaLLM 实例,指定本地 API 地址和模型名称
# temperature 的作用
# temperature 值越低(接近 0),输出越稳定、确定,更适合 精准任务(如代码生成、数学计算)。
# temperature 值越高(接近 1),输出越随机、更有创造性,适合 开放性任务(如故事创作、诗歌生成)
# temperature=0.7? 需要 一定随机性,但不失去准确性 1.适用于 开放性问题(如写文章、总结、对话)2. 适用于 聊天机器人、智能助手
# temperature=0.7 是一个平衡点,让模型既能保持合理的准确性,又能产生多样化的答案
llm = OllamaLLM(base_url="这里填写本地或云端部署的API地址", model="deepseek-r1:7b", temperature="0.7")
# 创建 ChatPromptTemplate 实例
prompt = ChatPromptTemplate.from_messages([
("system", "你是一位 Python 资深开发者"),
("user", "{input}")
])
# 创建一个字符串输出解析器
output_parser = StrOutputParser()
# 创建链(chain)
chain = prompt | llm | output_parser
# 进入聊天循环
print("欢迎使用 AI 聊天助手!(输入 '退出' 结束对话)")
while True:
user_input = input("你:")
# 退出条件
if user_input.lower() in ["exit", "quit", "退出"]:
print("聊天结束!")
break
# 发送请求到 LLM
response = chain.invoke({"input": user_input})
# 输出 AI 回复
print("AI:", response);
3. 代码讲解
1️⃣ 初始化本地 LLM
llm = OllamaLLM(base_url="这里填写本地或云端部署的API地址", model="deepseek-r1:7b")
- 这里使用
OllamaLLM
连接本地 Ollama 服务器,指定base_url
为本地 API 地址。 model="deepseek-r1:7b"
代表调用deepseek-r1:7b
模型,你可以换成其他本地模型,例如:deepseek-r1:70b
。
2️⃣ 设置对话模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是世界级的技术专家"),
("user", "{input}")
])
- system 角色:定义 AI 的行为,比如
"你是世界级的技术专家"
让 AI 以专家的身份回答问题。 - user 角色:占位符
{input}
,用于动态接收用户输入。
3️⃣ 解析模型输出
output_parser = StrOutputParser()
- 解析 LLM 生成的输出,确保返回的是一个字符串,方便后续处理。
4️⃣ 组合成 Chain
chain = prompt | llm | output_parser
- prompt:接收用户输入并格式化成 LLM 可理解的提示词。
- llm:调用本地大模型,获取 AI 生成的文本。
- output_parser:解析并返回最终结果。
5️⃣ 运行聊天逻辑
response = chain.invoke({"input": "你好,早上好!"})
chain.invoke()
方法用于执行对话,传入用户的问候"你好,早上好!"
,然后获取 AI 生成的回复。
6️⃣ 输出结果
print("模型回复:", response)
- 打印 AI 生成的回复。
4. 运行代码
在终端运行以下命令:
python chatbot.py
或者使用快捷键 shift+F10 直接运行
你应该会看到类似以下的输出:
模型回复: 你好!早上好!今天有什么技术问题可以帮你解答吗?
5. 总结
通过本教程,你学会了:
✅ 如何使用 LangChain 连接本地 OllamaLLM
✅ 如何设置 prompt 模板,控制 AI 角色
✅ 如何解析 AI 生成的文本,并打印输出