Ollama 服务交互的方式
·
这两种方式都是与 Ollama 服务交互的方式,但它们的用途和实现方式有所不同。以下是它们的区别:
1. 直接使用 requests.post 请求 Ollama API
response = requests.post(self.ollama_api_url, json=payload)
response.raise_for_status()
特点:
-
底层 HTTP 请求:
- 使用 Python 的
requests库直接发送 HTTP POST 请求到 Ollama 的 API 端点。 - 需要手动构建请求体(
payload)和处理响应。
- 使用 Python 的
-
灵活性:
- 可以完全自定义请求和响应的处理逻辑。
- 适合需要精细控制请求参数或处理非标准响应的场景。
-
适用场景:
- 当需要直接调用 Ollama 的特定 API 端点(如生成嵌入、生成文本等)时。
- 当 LangChain 或其他高级封装不满足需求时。
示例:
import requests
# 定义 Ollama API 地址和请求体
ollama_api_url = "http://127.0.0.1:11434/api/embeddings"
payload = {
"model": "nomic-embed-text:v1.5",
"prompt": "关于公司法律条款的解释"
}
# 发送请求
response = requests.post(ollama_api_url, json=payload)
response.raise_for_status() # 检查请求是否成功
embedding = response.json()["embedding"] # 提取嵌入向量
2. 使用 LangChain 的 Ollama 类
llm = Ollama(
model="deepseek-r1:1.5b", # 模型名称
base_url="http://127.0.0.1:11434" # Ollama 服务的地址和端口
)
# 创建 RAG 管道
qa_pipeline = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff", # 简单拼接检索到的文档块
retriever=vector_store.as_retriever(search_kwargs={"k": 3}) # 检索前 3 个相关块
)
特点:
-
高级封装:
- 使用 LangChain 的
Ollama类封装了与 Ollama 的交互逻辑。 - 提供了更高级的功能,如链式调用、检索增强生成(RAG)等。
- 使用 LangChain 的
-
易用性:
- 无需手动构建请求体或处理响应,LangChain 会自动处理这些细节。
- 适合快速构建复杂的 AI 应用(如问答系统、聊天机器人等)。
-
适用场景:
- 当需要快速构建基于 Ollama 的 AI 应用时。
- 当需要使用 LangChain 的高级功能(如 RAG、链式调用等)时。
示例:
from langchain.llms import Ollama
from langchain.chains import RetrievalQA
# 初始化 Ollama 模型
llm = Ollama(
model="deepseek-r1:1.5b", # 模型名称
base_url="http://127.0.0.1:11434" # Ollama 服务的地址和端口
)
# 创建 RAG 管道
qa_pipeline = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff", # 简单拼接检索到的文档块
retriever=vector_store.as_retriever(search_kwargs={"k": 3}) # 检索前 3 个相关块
)
# 查询
question = "关于公司法律条款的解释"
answer = qa_pipeline({"query": question})
print("回答:", answer)
主要区别
| 特性 | 直接使用 requests.post |
使用 LangChain 的 Ollama 类 |
|---|---|---|
| 实现方式 | 手动发送 HTTP 请求,处理响应 | 高级封装,自动处理请求和响应 |
| 灵活性 | 高,可以完全自定义请求和响应逻辑 | 较低,依赖 LangChain 的封装 |
| 易用性 | 较低,需要手动处理细节 | 高,适合快速构建应用 |
| 适用场景 | 需要精细控制请求或处理非标准响应的场景 | 快速构建基于 Ollama 的 AI 应用 |
| 功能支持 | 仅支持直接调用 API | 支持 LangChain 的高级功能(如 RAG、链式调用等) |
选择建议
- 如果你需要快速构建一个基于 Ollama 的 AI 应用(如问答系统、聊天机器人等),并且不需要精细控制请求细节,推荐使用 LangChain 的
Ollama类。 - 如果你需要直接调用 Ollama 的特定 API 端点,或者需要处理非标准响应,推荐使用
requests.post。
根据你的需求选择合适的实现方式!
更多推荐


所有评论(0)