使用说明

Node 对接示例

Node 18+,只用内置 fetch。完整可跑脚本:仓库根目录 examples/paper-client.mjs


1. 准备

export LLMWIKI_BASE_URL=http://127.0.0.1:8000
export LLMWIKI_API_TOKEN=sv_你的密钥   # 设置 → API 密钥

下面都假设:

const BASE = process.env.LLMWIKI_BASE_URL.replace(/\/$/, "");
const token = process.env.LLMWIKI_API_TOKEN;
const headers = {
  Authorization: `Bearer ${token}`,
  "Content-Type": "application/json",
};

2. 建任务文献库(幂等)

const res = await fetch(`${BASE}/v1/integrations/paper/task-libraries`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    external_task_id: "lp_task_6",
    name: "用户 · 任务6 · 选题",
  }),
});
const { knowledge_base: kb } = await res.json();
// 务必保存(slug = 同一用户下唯一):
// kb.id   → HTTP 导入 / 短索引
// kb.slug → MCP …/{slug}/mcp(或参数 knowledge_base);论文 form.llmwikiSlug

3. 导入参考文献

await fetch(`${BASE}/v1/knowledge-bases/${kb.id}/imports/references`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    mode: "upsert",
    references: [
      {
        external_id: "ref_1",
        title: "标题",
        authors: ["作者"],
        journal: "期刊",
        year: "2023",
        abstract: "摘要…",
      },
    ],
  }),
});

4. 取短索引(写作引用表)

const index = await fetch(
  `${BASE}/v1/knowledge-bases/${kb.id}/reference-index`,
  { headers }
).then((r) => r.json());
// index.items[].citation  → 如 "[1] 标题。作者。…"

5. 读某篇正文(可选)

const docs = await fetch(
  `${BASE}/v1/knowledge-bases/${kb.id}/documents`,
  { headers }
).then((r) => r.json());

const { content } = await fetch(
  `${BASE}/v1/documents/${docs[0].id}/content`,
  { headers }
).then((r) => r.json());

HTTP 读正文仅作 MCP 不可达时的回退:挑几篇 content 注入写作 prompt,避免将全库正文放入上下文。
推荐写作路径:百炼 Responses 挂 MCP,模型自行 search / read(见下)。


6. 写作检索(MCP,推荐)

百炼 Responses 挂 MCP,推荐 …/{kb.slug}/mcp(锁定空间)。模型在写作过程中自行 search / read不必业务侧先抽摘要再注入。

更多说明见 通义千问 MCP

npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DASHSCOPE_API_KEY, // sk-… 百炼
  baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
});

// kb.slug 来自建库响应;MCP 须公网可达(不能是仅本机 127.0.0.1)
const mcpUrl = process.env.LLMWIKI_MCP_URL; // 例:https://your-host/{slug}/mcp
const svKey = process.env.LLMWIKI_API_KEY; // sv_…

const mcpTool = {
  type: "mcp",
  server_protocol: "sse",
  server_label: "wenxian-bianyi",
  server_description:
    "文稿智库。先 guide,再 search/read;可省略 knowledge_base。用户要求落稿时再 write。",
  server_url: mcpUrl,
  headers: {
    Authorization: `Bearer ${svKey}`,
  },
};

const response = await client.responses.create({
  model: "qwen3.5-plus",
  input: "根据文献库资料撰写相关小节……",
  tools: [mcpTool],
});

console.log(response.output_text);

// 若用全局 /mcp:在 input / 系统提示中写死 knowledge_base = kb.slug

7. 一键跑通

node examples/paper-client.mjs

会打印 kb.idkb.slug、导入结果、摘录长度。

接口说明:论文平台对接