DocsAI 连接 / 本地 LLM
本地 LLM (Ollama、LM Studio、Gemma)
如果处于离线环境,或出于安全考虑无法使用云端 LLM,可在 Ollama、LM Studio 等加载的本地模型上接入 MCP 客户端,将 FindIP 作为工具使用。建议选用支持工具调用(tool use)的 8B 以上模型,例如 Llama 3.1、Qwen 2.5、Gemma 2 等。
前置条件
本地正在运行的 LLM 实例 + FindIP API Key + 支持 tool calling 的客户端(例如 FastMCP,或带 custom base URL 的 OpenAI Python SDK)。
配置步骤
1
使用 Ollama 启动模型
拉取支持工具调用的模型。
bash
ollama serve ollama pull llama3.1:8b-instruct-q4_K_M # 或: ollama pull qwen2.5:7b-instruct
2
定义 FindIP 调用函数
向 OpenAI 兼容 API(Ollama 在 localhost:11434/v1)注册工具。
python
import os, requests
from openai import OpenAI
llm = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
tools = [{
"type": "function",
"function": {
"name": "findip_search",
"description": "中、美、日、韩、EP 五国专利语义检索",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string"},
"top_k": {"type": "integer", "default": 10},
},
"required": ["query"],
},
},
}]
def findip_search(query, top_k=10):
return requests.post(
"https://api.findip.ai/api/v1/search/semantic",
headers={"X-API-Key": os.environ["FINDIP_API_KEY"]},
json={"query": query, "top_k": top_k},
timeout=30,
).json()3
工具调用循环
模型返回 tool_calls 后,实际执行调用并将结果回传给模型。
python
messages = [{"role": "user", "content": "全固态电池固体电解质核心专利 5 件"}]
res = llm.chat.completions.create(model="llama3.1:8b-instruct-q4_K_M", messages=messages, tools=tools)
if res.choices[0].message.tool_calls:
for tc in res.choices[0].message.tool_calls:
result = findip_search(**eval(tc.function.arguments))
messages.append(res.choices[0].message)
messages.append({"role": "tool", "tool_call_id": tc.id, "content": str(result)})
final = llm.chat.completions.create(model="llama3.1:8b-instruct-q4_K_M", messages=messages, tools=tools)
print(final.choices[0].message.content)示例提示词
Prompt
"请筛选中国与美国在钙钛矿太阳能电池稳定性提升方向的 5 件核心专利,并附上权利要求摘要。"
常见问题
模型不会发起工具调用。
请确认模型是否支持工具调用。Llama 3.1 8B/70B Instruct、Qwen 2.5 7B 及以上、Gemma 2 27B 等较为稳定。7B 以下失败率较高。
响应过慢。
让本地模型直接读取并总结原始数据负担很大。仅将 FindIP 响应中的 title 与 abstract 抽出后再传给模型,可将 token 消耗降至约 1/5。
希望直接使用 MCP 标准。
也可以通过 FastMCP 或 LangChain 的 MCP adapter 直接连接 https://api.findip.ai/mcp。但在无界面环境下 OAuth 流程需额外处理,通常 API Key 方式更为简单。