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 方式更为简单。

FindIP | Semantic Patent Search