Ollama 与 LangChain 集成:构建强大的本地 AI 应用
本文档介绍如何结合开源大语言模型部署工具 ollama 和 ai 应用构建框架 langchain,在本地环境快速部署和使用先进的 ai 模型。 文档包含核心代码片段和详细解释,完整代码可在 [jupyter notebook](此处应插入jupyter notebook链接) 中找到。(注意:部分内容具有时效性,请以最新信息为准。)
1. 环境配置
1.1 Conda 环境设置
建议使用 Conda 创建虚拟环境:
conda create -n handlm python=3.10 -y conda activate handlm pip install jupyter python -m ipykernel install --user --name=handlm
重启 Jupyter 并选择 handlm 内核。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

立即学习“Python免费学习笔记(深入)”;
(可选) 使用全局环境: 如不使用 Conda,可直接在全局 Python 环境中安装依赖。
1.2 安装依赖包
使用 pip 安装必要的库:
pip install langchain-ollama langchain langchain-community Pillow faiss-cpu
2. 模型下载与初始化
2.1 下载 llama3.1 模型
- 下载并安装 Ollama (https://www.php.cn/link/2575c857df983996d49550f3e924755f).
- 查看可用模型 (https://www.php.cn/link/5aa99ed4dc2312e348d37fc9da80eb5b).
- 使用
ollama pull llama3.1下载 llama3.1 模型。

模型存储路径:
- macOS:
~/.ollama/models/ - Linux/WSL:
/usr/share/ollama/.ollama/models - Windows:
C:\Users\Administrator\.ollama\models
3. 核心功能示例
3.1 基于 ChatPromptTemplate 的对话
使用 ChatPromptTemplate 创建可重用的对话模板:
from langchain.prompts import ChatPromptTemplate
from langchain_ollama import ChatOllama
template = """
你是一个乐于助人的AI助手,擅长回答各种问题。
问题:{question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOllama(model="llama3.1", temperature=0.7)
chain = prompt | model
chain.invoke({"question": "你比 GPT-4 强大吗?"})
3.2 流式输出
使用 model.stream() 实现流式输出,提升用户体验:
model = ChatOllama(model="llama3.1", temperature=0.7)
messages = [("human", "你好呀")]
for chunk in model.stream(messages):
print(chunk.content, end="", flush=True)
3.3 工具调用
通过 bind_tools 将自定义函数与模型集成:
def simple_calculator(operation: str, x: float, y: float) -> float:
# ... 计算逻辑 ...
pass
llm = ChatOllama(model="llama3.1", temperature=0).bind_tools([simple_calculator])
result = llm.invoke("你知道一千万乘以二等于多少吗?")
3.4 多模态模型 (以 llava 为例)
下载多模态模型 (ollama pull llava),并使用图像和文本输入:
from langchain_ollama import ChatOllama # ... (图像预处理代码) ... llm = ChatOllama(model="llava", temperature=0) # ... (多模态提示函数和链式处理代码) ...

4. 进阶用法
4.1 ConversationChain 用于多轮对话
使用 ConversationChain 管理多轮对话上下文:
from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain memory = ConversationBufferMemory() conversation = ConversationChain(llm=model, memory=memory, verbose=True) # ... (多轮对话代码) ...
4.2 自定义提示模板
创建更复杂的提示模板以满足特定需求:
# ... (自定义提示模板代码) ...
4.3 构建简单的 RAG 问答系统
下载 embedding 模型 (ollama pull nomic-embed-text),构建 RAG 系统:
# ... (RAG 系统代码,包含文本分割、向量化、检索和问答链构建) ...
5. 总结
本文档展示了如何利用 Ollama 和 LangChain 构建各种 AI 应用。 通过选择合适的模型和组件,您可以构建满足特定需求的 AI 系统。 希望本指南能帮助您开始 AI 开发之旅。










