LangChain与Ollama:本地Qwen链、工具及架构
将 langchain-ollama 指向本地的 Qwen 标签,即可在无需云密钥的情况下获取链式处理、流式处理、工具调用以及结构化输出。包括设置步骤及可能遇到的问题。
来源: LangChain integrations with Ollama local LLM - qwen3.8:27b
通过 Ollama 使用本地 Qwen,集成至 LangChain
在您的机器上运行如 qwen3.8:27b 这样的开源聊天模型,并将它们接入 LangChain 的链、智能体及工具中——无需云 API 密钥,也无需按令牌计费。
一句话介绍 Ollama
Ollama 将模型权重、配置及运行环境封装在便于使用的 Modelfile 接口背后,同时自动处理常见场景下的 GPU 加速相关细节。只需拉取对应标签、输入提示语,即可在 11434 端口上暴露 HTTP API。
LangChain 对 Ollama 的集成
langchain-ollama 包提供了具备工具调用、结构化输出、多模态输入、流式处理、异步操作及对数概率功能的聊天模型——其界面与常见的云聊天服务类似,只是运行在本地主机上。
配置概要
安装 Ollama,拉取所需的聊天模型,并确认 API 能正常响应。在 Python 中,安装 LangChain 的 Ollama 集成模块,然后构建一个指向本地基础 URL 的聊天模型。
ollama pull qwen3.8:27b
ollama list
链与提示词
无需离开当前设备,即可构建简单的提示词→模型链来实现内容总结或问答功能:
from langchain_ollama import ChatOllama
llm = ChatOllama(
model="qwen3.8:27b",
temperature=0.3,
)
如果用户界面需要逐步更新,可实现令牌流式传输:
messages = [
ChatMessage(role="control", content="thinking"),
HumanMessage("What is 3^3?"),
]
工具与智能体
绑定工具的方式与绑定托管模型相同。本地模型必须支持调用工具,才能实现稳定的智能体循环——请选择已知能与 Ollama 工具协议兼容的标签。
messages = [
SystemMessage(
content="""
You are an expert at reading screenshots and technical documentation.
Rules:
- Extract information only from the image.
- Do not hallucinate missing values.
- Return concise answers.
- Preserve commands exactly as shown.
"""
),
HumanMessage(
content=[
{
"type": "image_url",
"image_url": f"data:image/png;base64,{image_b64}",
},
{
"type": "text",
"text": "What is the download command for the Gemma 7B model?",
},
],
),
]
SystemMessage
↓
"You are a technical documentation analyst.
Extract information only from the image.
Do not guess.
Return concise answers."
HumanMessage #1
↓
"What is the download command?"
HumanMessage #2
↓
"What version of the model is shown?"
HumanMessage #3
↓
"What is the model's parameter count?"
结构化输出
当需要 JSON 格式数据时,应使用结构化输出辅助功能,而不仅仅是简单地要求“返回 JSON”:
HumanMessage(
content=[
{
"type": "image_url",
"image_url": f"data:image/png;base64,{image_b64}",
},
{
"type": "text",
"text": """
The image is a screenshot from an Ollama model page.
Task:
1. Find the section containing model download instructions.
2. Locate the Gemma 7B model.
3. Return only the exact Ollama pull command.
Output format:
Return JSON only:
{
"model_name": "",
"download_command": "",
"confidence": ""
}
Do not include explanations.
"""
},
]
)
选择此技术栈的原因
数据保留在本地,可无限次迭代且无速率限制,同时仍可使用 LangChain 的 chain/agent 词汇。用最佳质量或速度来换取隐私性与成本可预测性——这对于原型、内部工具及离线演示而言是相当划算的选择。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。
建议在每个示例中都明确标注模型标签,以避免升级时在教程进行过程中悄悄改变行为。