@ganziliang/kb-model-setup 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +227 -0
  2. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,227 @@
1
+ # @ganziliang/kb-model-setup
2
+
3
+ `@ganziliang/kb-model-setup` 是 `@ganziliang/kb` 使用的模型配置模块,负责:
4
+
5
+ - 通过智真 LLM Gateway 查询账号可用模型
6
+ - 引导用户输入 `apiId` 和 API Key
7
+ - 自动选择可用的 OpenAI 或 Anthropic 模型
8
+ - 校验模型配置
9
+ - 从环境变量读取模型配置
10
+
11
+ 这是一个配置扩展模块,不是独立的聊天命令行工具。普通用户安装 `@ganziliang/kb` 时会自动安装它,不需要单独操作。
12
+
13
+ ## 环境要求
14
+
15
+ - Node.js `>=22.5.0`
16
+ - 能够访问智真 LLM Gateway
17
+ - 有效的 `apiId` 和模型 API Key
18
+
19
+ ## 安装
20
+
21
+ 如果要在其他 Node.js 项目中直接使用:
22
+
23
+ ```bash
24
+ npm install @ganziliang/kb-model-setup
25
+ ```
26
+
27
+ 全局安装仅适用于需要调试或单独管理该模块的情况:
28
+
29
+ ```bash
30
+ npm install -g @ganziliang/kb-model-setup
31
+ ```
32
+
33
+ 安装 `@ganziliang/kb` 时会自动安装此依赖:
34
+
35
+ ```bash
36
+ npm install -g @ganziliang/kb
37
+ ```
38
+
39
+ ## 在 kb 中使用
40
+
41
+ 通常不需要直接调用本包。安装并启动 `kb`:
42
+
43
+ ```bash
44
+ kb
45
+ ```
46
+
47
+ 首次启动时,`kb` 会自动进入模型配置流程,依次询问:
48
+
49
+ 1. 智真 `api-stats` 页面地址或 `apiId`
50
+ 2. API Key
51
+
52
+ 可粘贴以下形式的 `api-stats` 页面地址:
53
+
54
+ ```text
55
+ https://llm-gateway.zhizhengroup.com/admin-next/api-stats?apiId=<你的apiId>
56
+ ```
57
+
58
+ 也可以直接输入 `apiId`。模块随后会查询可用模型,并优先选择 `gpt-5.6-luna`;如果该模型不可用,则选择其他可用 GPT 模型,或者选择可用的 Anthropic 模型。
59
+
60
+ 模型配置由 `kb` 保存到:
61
+
62
+ ```text
63
+ ~/.config/kb/config.json
64
+ ```
65
+
66
+ Windows 示例:
67
+
68
+ ```text
69
+ C:\Users\<用户名>\.config\kb\config.json
70
+ ```
71
+
72
+ ## 环境变量配置
73
+
74
+ 如果不想使用交互式配置,可以设置以下完整环境变量:
75
+
76
+ | 环境变量 | 说明 |
77
+ | --- | --- |
78
+ | `KB_PROVIDER` | 模型提供方名称,例如 `company-gpt` |
79
+ | `KB_API` | API 协议,只支持 `openai-responses` 或 `anthropic-messages` |
80
+ | `KB_MODEL` | 模型名称 |
81
+ | `KB_BASE_URL` | 模型网关基础地址 |
82
+ | `KB_API_KEY` | API Key |
83
+
84
+ PowerShell 示例:
85
+
86
+ ```powershell
87
+ $env:KB_PROVIDER = "company-gpt"
88
+ $env:KB_API = "openai-responses"
89
+ $env:KB_MODEL = "gpt-5.6-luna"
90
+ $env:KB_BASE_URL = "https://llm-gateway.zhizhengroup.com/openai"
91
+ $env:KB_API_KEY = "你的APIKey"
92
+ kb
93
+ ```
94
+
95
+ Anthropic 配置示例:
96
+
97
+ ```powershell
98
+ $env:KB_PROVIDER = "company-anthropic"
99
+ $env:KB_API = "anthropic-messages"
100
+ $env:KB_MODEL = "你的Anthropic模型"
101
+ $env:KB_BASE_URL = "https://llm-gateway.zhizhengroup.com/api"
102
+ $env:KB_API_KEY = "你的APIKey"
103
+ kb
104
+ ```
105
+
106
+ 环境变量必须全部设置且通过校验,否则程序会回退到交互式配置流程。
107
+
108
+ ## 编程接口
109
+
110
+ ### `createModelSetupExtension`
111
+
112
+ 创建模型配置扩展:
113
+
114
+ ```js
115
+ import { createModelSetupExtension } from "@ganziliang/kb-model-setup";
116
+
117
+ const setup = createModelSetupExtension();
118
+ ```
119
+
120
+ #### `configure(prompter)`
121
+
122
+ 使用自定义交互提示器配置模型。提示器需要实现 `SetupPrompter` 接口:
123
+
124
+ ```ts
125
+ type SetupPrompter = {
126
+ ask(question: string, initial?: string): Promise<string>;
127
+ select(question: string, choices: string[], initial?: number): Promise<number>;
128
+ confirm(question: string): Promise<boolean>;
129
+ notice(message: string): Promise<void>;
130
+ };
131
+ ```
132
+
133
+ 示例:
134
+
135
+ ```ts
136
+ const config = await setup.configure(prompter);
137
+ console.log(config);
138
+ ```
139
+
140
+ 返回的配置结构:
141
+
142
+ ```ts
143
+ type ModelConfig = {
144
+ provider: string;
145
+ api: "openai-responses" | "anthropic-messages";
146
+ model: string;
147
+ baseURL: string;
148
+ apiKey: string;
149
+ };
150
+ ```
151
+
152
+ ### `validate(config)`
153
+
154
+ 校验模型配置并返回错误信息数组:
155
+
156
+ ```ts
157
+ const errors = setup.validate({
158
+ provider: "company-gpt",
159
+ api: "openai-responses",
160
+ model: "gpt-5.6-luna",
161
+ baseURL: "https://llm-gateway.zhizhengroup.com/openai",
162
+ apiKey: "your-api-key",
163
+ });
164
+
165
+ if (errors.length > 0) {
166
+ console.error(errors);
167
+ }
168
+ ```
169
+
170
+ 返回空数组表示配置有效。
171
+
172
+ ### `configFromEnvironment`
173
+
174
+ 从环境变量读取配置:
175
+
176
+ ```ts
177
+ import { configFromEnvironment } from "@ganziliang/kb-model-setup";
178
+
179
+ const config = configFromEnvironment();
180
+ if (!config) {
181
+ console.log("环境变量配置不完整或无效");
182
+ }
183
+ ```
184
+
185
+ 也可以传入自定义环境变量对象,便于测试:
186
+
187
+ ```ts
188
+ const config = configFromEnvironment({
189
+ KB_PROVIDER: "company",
190
+ KB_API: "anthropic-messages",
191
+ KB_MODEL: "model-a",
192
+ KB_BASE_URL: "https://example.test",
193
+ KB_API_KEY: "secret",
194
+ });
195
+ ```
196
+
197
+ ## 支持的协议
198
+
199
+ 当前支持两种协议:
200
+
201
+ - `openai-responses`
202
+ - `anthropic-messages`
203
+
204
+ 模块使用固定的智真 LLM Gateway 查询接口:
205
+
206
+ ```text
207
+ https://llm-gateway.zhizhengroup.com/apiStats/api/user-stats
208
+ ```
209
+
210
+ ## 安全提示
211
+
212
+ - API Key 会被保存到 `kb` 的配置文件中,请不要将该文件提交到 Git。
213
+ - 不要在日志、截图或公开文档中暴露 API Key。
214
+ - `apiId` 和 API Key 应仅使用有权限的账号信息。
215
+
216
+ ## 开发和测试
217
+
218
+ 在源码目录执行:
219
+
220
+ ```bash
221
+ npm install
222
+ npm run typecheck
223
+ npm run build
224
+ npm test
225
+ ```
226
+
227
+ 源码位于 `src/index.ts`,编译产物位于 `dist/`。修改源码后需要重新执行 `npm run build`。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganziliang/kb-model-setup",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Interactive model configuration for the kb local knowledge base agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",