langchain与ollama模型交互多轮对话
时间: 2025-07-15 09:20:05 浏览: 5
### 如何通过 LangChain 与 Ollama 实现多轮对话
为了实现 LangChain 和 Ollama 的多轮对话功能,可以通过以下方式完成。LangChain 提供了一个灵活的框架来管理对话历史记录,并将其传递给大语言模型 (LLM),从而支持上下文感知的多轮对话[^2]。
以下是具体的方法和示例代码:
#### 使用 Memory 组件保存对话历史
LangChain 中提供了多种记忆组件(Memory),例如 `ConversationBufferMemory` 或者更高级的记忆机制如 `ConversationTokenBufferMemory`。这些组件能够存储对话的历史记录,并在每次调用 LLM 时自动附加到输入中[^3]。
下面是一个完整的 Python 示例代码,展示如何利用 LangChain 和 Ollama 进行多轮对话:
```python
from langchain.memory import ConversationBufferMemory
from langchain.llms import Ollama
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# 初始化 Ollama 模型实例
ollama_model_name = "llama2" # 替换为你安装的具体 Ollama 模型名称
llm = Ollama(model=ollama_model_name)
# 创建一个会话缓冲区内存对象
memory = ConversationBufferMemory()
# 定义提示模板
prompt_template = """The following is a friendly conversation between a human and an AI.
Chat History:
{chat_history}
Human: {human_input}
AI:"""
PROMPT = PromptTemplate(
input_variables=["chat_history", "human_input"], template=prompt_template
)
# 构建链
conversation_chain = LLMChain(llm=llm, prompt=PROMPT, memory=memory)
# 开始多轮对话
while True:
user_input = input("You: ")
if user_input.lower() in ["exit", "quit"]:
break
ai_response = conversation_chain.predict(human_input=user_input)
print(f"AI: {ai_response}")
```
上述代码实现了以下几个核心功能:
1. **初始化 Ollama 模型**:指定要使用的 Ollama 模型名称。
2. **配置记忆模块**:使用 `ConversationBufferMemory` 存储聊天历史。
3. **定义自定义提示模板**:将聊天历史作为变量嵌入到提示中。
4. **创建并运行链**:通过 `LLMChain` 将逻辑串联起来,在每一轮对话中动态更新提示内容。
此方法确保了用户的每一次提问都能携带之前的对话背景信息,从而使对话更加连贯自然[^1]。
---
#### 注意事项
- 确保已正确安装并启动 Ollama 服务端口,默认情况下它监听于 `http://localhost:11434`。
- 如果需要处理更大的上下文窗口或者优化性能,可以考虑调整 Ollama 模型参数或切换至其他更适合的任务专用模型。
---
阅读全文
相关推荐

















