17370845950

Ollama 在 LangChain 中的使用 - Python 集成

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 模型☜☜☜

(可选) 使用全局环境: 如不使用 Conda,可直接在全局 Python 环境中安装依赖。

1.2 安装依赖包

使用 pip 安装必要的库:

pip install langchain-ollama langchain langchain-community Pillow faiss-cpu

2. 模型下载与初始化

2.1 下载 llama3.1 模型

  1. 下载并安装 Ollama (https://www./link/2575c857df983996d49550f3e924755f).
  2. 查看可用模型 (https://www./link/5aa99ed4dc2312e348d37fc9da80eb5b).
  3. 使用 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 开发之旅。