aixxai 1.6.0 → 1.6.2
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.
- package/README.md +52 -52
- package/bin/aixx.js +133 -133
- package/package.json +33 -33
- package/src/commands/balance.js +168 -168
- package/src/commands/config.js +68 -68
- package/src/commands/help.js +45 -45
- package/src/commands/install.js +90 -3
- package/src/commands/models.js +120 -120
- package/src/commands/recharge.js +131 -131
- package/src/commands/search.js +2 -2
- package/src/commands/test.js +91 -91
- package/templates/QUICKSTART.md +1 -1
- package/templates/references/account.md +14 -4
- package/templates/references/apps.md +5 -3
- package/templates/references/chat.md +137 -135
- package/templates/references/data.md +151 -151
- package/templates/references/notify.md +53 -53
- package/templates/references/search.md +96 -96
- package/aixxai-1.6.0.tgz +0 -0
package/src/commands/test.js
CHANGED
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AIXX CLI - test 命令
|
|
3
|
-
* 测试AIXX是否可用
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { DEFAULT_BASE_URL } from '../../bin/aixx.js';
|
|
7
|
-
import { loadApiKey, maskKey } from '../utils/env.js';
|
|
8
|
-
|
|
9
|
-
export async function test(subArgs) {
|
|
10
|
-
console.log('╔══════════════════════════════════════════╗');
|
|
11
|
-
console.log('║ AIXX 连通性测试 ║');
|
|
12
|
-
console.log('╚══════════════════════════════════════════╝\n');
|
|
13
|
-
|
|
14
|
-
// 统一配置链:环境变量 → ~/.aixx/config.json → ~/.aixx/account.json
|
|
15
|
-
const apiKey = loadApiKey();
|
|
16
|
-
const baseUrl = process.env.AIXX_BASE_URL || DEFAULT_BASE_URL;
|
|
17
|
-
|
|
18
|
-
if (!apiKey) {
|
|
19
|
-
console.error('❌ 未找到AIXX API Key');
|
|
20
|
-
console.error(' 运行 npx aixxai install 配置,或设置环境变量 AIXX_API_KEY');
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
console.log(`测试地址: ${baseUrl}`);
|
|
25
|
-
console.log(`使用Key: ${maskKey(apiKey)}\n`);
|
|
26
|
-
|
|
27
|
-
// 1. 测试模型列表(带key调 /v1/models,这才是真实的可用性验证)
|
|
28
|
-
let modelCount = 0;
|
|
29
|
-
console.log('1️⃣ 获取可用模型列表...');
|
|
30
|
-
try {
|
|
31
|
-
const resp = await fetch(`${baseUrl}/models`, {
|
|
32
|
-
headers: { 'Authorization': `Bearer ${apiKey}` }
|
|
33
|
-
});
|
|
34
|
-
if (resp.ok) {
|
|
35
|
-
const data = await resp.json();
|
|
36
|
-
const models = data.data || data.models || [];
|
|
37
|
-
modelCount = models.length;
|
|
38
|
-
console.log(` ✅ 可用模型 (${models.length}个):`);
|
|
39
|
-
models.slice(0, 10).forEach(m => {
|
|
40
|
-
const id = typeof m === 'string' ? m : m.id;
|
|
41
|
-
console.log(` • ${id}`);
|
|
42
|
-
});
|
|
43
|
-
if (models.length > 10) console.log(` ... 还有 ${models.length - 10} 个`);
|
|
44
|
-
} else if (resp.status === 401) {
|
|
45
|
-
console.error(' ❌ API Key 无效(401)');
|
|
46
|
-
process.exit(1);
|
|
47
|
-
} else if (resp.status === 404) {
|
|
48
|
-
console.error(` ❌ 接口404,检查 AIXX_BASE_URL 是否正确(当前: ${baseUrl})`);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
} else {
|
|
51
|
-
console.error(` ❌ 返回 ${resp.status}`);
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
} catch (err) {
|
|
55
|
-
console.error(` ❌ 失败: ${err.message}`);
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// 2. 测试实际调用
|
|
60
|
-
console.log('\n2️⃣ 测试调用 deepseek-chat...');
|
|
61
|
-
try {
|
|
62
|
-
const resp = await fetch(`${baseUrl}/chat/completions`, {
|
|
63
|
-
method: 'POST',
|
|
64
|
-
headers: {
|
|
65
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
66
|
-
'Content-Type': 'application/json'
|
|
67
|
-
},
|
|
68
|
-
body: JSON.stringify({
|
|
69
|
-
model: 'deepseek-chat',
|
|
70
|
-
messages: [{ role: 'user', content: '说"测试成功"三个字' }],
|
|
71
|
-
max_tokens: 20
|
|
72
|
-
})
|
|
73
|
-
});
|
|
74
|
-
if (resp.ok) {
|
|
75
|
-
const data = await resp.json();
|
|
76
|
-
const reply = data.choices?.[0]?.message?.content || '(空回复)';
|
|
77
|
-
const usage = data.usage || {};
|
|
78
|
-
console.log(` ✅ 调用成功!`);
|
|
79
|
-
console.log(` 模型回复: ${reply}`);
|
|
80
|
-
console.log(` Token用量: ${usage.total_tokens || '?'}`);
|
|
81
|
-
} else {
|
|
82
|
-
const errData = await resp.json().catch(() => ({}));
|
|
83
|
-
console.error(` ❌ 调用失败 (${resp.status}): ${errData.error?.message || resp.statusText}`);
|
|
84
|
-
if (resp.status === 402) console.error(' 提示: 额度不足,请充值');
|
|
85
|
-
}
|
|
86
|
-
} catch (err) {
|
|
87
|
-
console.error(` ❌ 网络错误: ${err.message}`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
console.log('\n测试完成。\n');
|
|
91
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* AIXX CLI - test 命令
|
|
3
|
+
* 测试AIXX是否可用
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { DEFAULT_BASE_URL } from '../../bin/aixx.js';
|
|
7
|
+
import { loadApiKey, maskKey } from '../utils/env.js';
|
|
8
|
+
|
|
9
|
+
export async function test(subArgs) {
|
|
10
|
+
console.log('╔══════════════════════════════════════════╗');
|
|
11
|
+
console.log('║ AIXX 连通性测试 ║');
|
|
12
|
+
console.log('╚══════════════════════════════════════════╝\n');
|
|
13
|
+
|
|
14
|
+
// 统一配置链:环境变量 → ~/.aixx/config.json → ~/.aixx/account.json
|
|
15
|
+
const apiKey = loadApiKey();
|
|
16
|
+
const baseUrl = process.env.AIXX_BASE_URL || DEFAULT_BASE_URL;
|
|
17
|
+
|
|
18
|
+
if (!apiKey) {
|
|
19
|
+
console.error('❌ 未找到AIXX API Key');
|
|
20
|
+
console.error(' 运行 npx aixxai install 配置,或设置环境变量 AIXX_API_KEY');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
console.log(`测试地址: ${baseUrl}`);
|
|
25
|
+
console.log(`使用Key: ${maskKey(apiKey)}\n`);
|
|
26
|
+
|
|
27
|
+
// 1. 测试模型列表(带key调 /v1/models,这才是真实的可用性验证)
|
|
28
|
+
let modelCount = 0;
|
|
29
|
+
console.log('1️⃣ 获取可用模型列表...');
|
|
30
|
+
try {
|
|
31
|
+
const resp = await fetch(`${baseUrl}/models`, {
|
|
32
|
+
headers: { 'Authorization': `Bearer ${apiKey}` }
|
|
33
|
+
});
|
|
34
|
+
if (resp.ok) {
|
|
35
|
+
const data = await resp.json();
|
|
36
|
+
const models = data.data || data.models || [];
|
|
37
|
+
modelCount = models.length;
|
|
38
|
+
console.log(` ✅ 可用模型 (${models.length}个):`);
|
|
39
|
+
models.slice(0, 10).forEach(m => {
|
|
40
|
+
const id = typeof m === 'string' ? m : m.id;
|
|
41
|
+
console.log(` • ${id}`);
|
|
42
|
+
});
|
|
43
|
+
if (models.length > 10) console.log(` ... 还有 ${models.length - 10} 个`);
|
|
44
|
+
} else if (resp.status === 401) {
|
|
45
|
+
console.error(' ❌ API Key 无效(401)');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
} else if (resp.status === 404) {
|
|
48
|
+
console.error(` ❌ 接口404,检查 AIXX_BASE_URL 是否正确(当前: ${baseUrl})`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
} else {
|
|
51
|
+
console.error(` ❌ 返回 ${resp.status}`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
} catch (err) {
|
|
55
|
+
console.error(` ❌ 失败: ${err.message}`);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// 2. 测试实际调用
|
|
60
|
+
console.log('\n2️⃣ 测试调用 deepseek-chat...');
|
|
61
|
+
try {
|
|
62
|
+
const resp = await fetch(`${baseUrl}/chat/completions`, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: {
|
|
65
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
66
|
+
'Content-Type': 'application/json'
|
|
67
|
+
},
|
|
68
|
+
body: JSON.stringify({
|
|
69
|
+
model: 'deepseek-chat',
|
|
70
|
+
messages: [{ role: 'user', content: '说"测试成功"三个字' }],
|
|
71
|
+
max_tokens: 20
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
if (resp.ok) {
|
|
75
|
+
const data = await resp.json();
|
|
76
|
+
const reply = data.choices?.[0]?.message?.content || '(空回复)';
|
|
77
|
+
const usage = data.usage || {};
|
|
78
|
+
console.log(` ✅ 调用成功!`);
|
|
79
|
+
console.log(` 模型回复: ${reply}`);
|
|
80
|
+
console.log(` Token用量: ${usage.total_tokens || '?'}`);
|
|
81
|
+
} else {
|
|
82
|
+
const errData = await resp.json().catch(() => ({}));
|
|
83
|
+
console.error(` ❌ 调用失败 (${resp.status}): ${errData.error?.message || resp.statusText}`);
|
|
84
|
+
if (resp.status === 402) console.error(' 提示: 额度不足,请充值');
|
|
85
|
+
}
|
|
86
|
+
} catch (err) {
|
|
87
|
+
console.error(` ❌ 网络错误: ${err.message}`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
console.log('\n测试完成。\n');
|
|
91
|
+
}
|
package/templates/QUICKSTART.md
CHANGED
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
## 查余额
|
|
8
8
|
|
|
9
|
+
**首选(真实美元余额,直接报给用户)**:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
curl "https://console.aixx.ai/cloudpay/balance?api_key=$AIXX_API_KEY"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
返回 `{"ok":true,"balance_usd":162.52,...}` → 告诉用户"余额 $162.52"。
|
|
16
|
+
|
|
17
|
+
备选(只查额度上限):
|
|
18
|
+
|
|
9
19
|
```bash
|
|
10
20
|
curl {AIXX_BASE_URL}/dashboard/billing/subscription \
|
|
11
21
|
-H "Authorization: Bearer {AIXX_API_KEY}"
|
|
@@ -48,15 +58,15 @@ agent 应该:
|
|
|
48
58
|
|
|
49
59
|
### 方式1:信用卡/ApplePay(推荐)
|
|
50
60
|
引导用户运行命令:`npx aixxai recharge`,会生成支付链接。
|
|
51
|
-
|
|
61
|
+
或让用户打开个人中心充值:**https://console.aixx.ai/console-app.html**
|
|
52
62
|
|
|
53
63
|
### 方式2:USDT(加密货币)
|
|
54
|
-
|
|
64
|
+
同样引导到个人中心:**https://console.aixx.ai/console-app.html**(充值页内按提示操作)。
|
|
55
65
|
|
|
56
66
|
### agent该怎么说
|
|
57
67
|
"你可以用这两种方式充值:
|
|
58
|
-
1. 信用卡/ApplePay:运行 \`npx aixxai recharge
|
|
59
|
-
2. USDT
|
|
68
|
+
1. 信用卡/ApplePay:运行 \`npx aixxai recharge\`,或打开 https://console.aixx.ai/console-app.html
|
|
69
|
+
2. USDT加密货币:同样在个人中心充值页按提示操作
|
|
60
70
|
|
|
61
71
|
充完后对我说'充好了',我帮你查到账没。"
|
|
62
72
|
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
## 订阅制(统一价格)
|
|
10
10
|
|
|
11
11
|
- **¥2.99/月,全部10个应用不限次使用**(不是每个应用单独买)
|
|
12
|
+
|
|
13
|
+
> 📌 和用户说清楚:应用直连是**独立订阅**(¥2.99/月全应用包月),与技能商店的**买断制**($1.99/个永久)是两套产品,用户混淆时先讲清区别再推荐。
|
|
12
14
|
- 购买:调下单接口,`plan` 固定传 `app_monthly`:
|
|
13
15
|
```bash
|
|
14
|
-
curl -X POST
|
|
16
|
+
curl -X POST https://aixx.ai/v1/capability/{id}/purchase \
|
|
15
17
|
-H "Content-Type: application/json" \
|
|
16
18
|
-d '{"plan": "app_monthly", "user_compute_key": "sk-用户的key"}'
|
|
17
19
|
```
|
|
@@ -20,7 +22,7 @@
|
|
|
20
22
|
## 执行(所有应用统一格式)
|
|
21
23
|
|
|
22
24
|
```bash
|
|
23
|
-
curl -X POST
|
|
25
|
+
curl -X POST https://aixx.ai/v1/capability/{id}/execute \
|
|
24
26
|
-H "Content-Type: application/json" \
|
|
25
27
|
-d '{
|
|
26
28
|
"params": { "参数": "值" },
|
|
@@ -28,7 +30,7 @@ curl -X POST http://14.103.27.195/v1/capability/{id}/execute \
|
|
|
28
30
|
}'
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
能力层地址:`
|
|
33
|
+
能力层地址:`https://aixx.ai/v1`(和LLM对话的 `{AIXX_BASE_URL}` 不是同一个入口)。
|
|
32
34
|
|
|
33
35
|
---
|
|
34
36
|
|
|
@@ -1,135 +1,137 @@
|
|
|
1
|
-
# LLM 对话调用
|
|
2
|
-
|
|
3
|
-
翻译、写作、改写、总结、分析、问答、代码生成等**需要LLM能力**的请求。
|
|
4
|
-
|
|
5
|
-
**先读 [`./aixx-shared.md`](./aixx-shared.md) 了解环境检查和调用方式。**
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 调用方式(OpenAI 兼容)
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
curl -X POST {AIXX_BASE_URL}/chat/completions \
|
|
13
|
-
-H "Authorization: Bearer {AIXX_API_KEY}" \
|
|
14
|
-
-H "Content-Type: application/json" \
|
|
15
|
-
-d '{
|
|
16
|
-
"model": "glm-4-flash",
|
|
17
|
-
"messages": [
|
|
18
|
-
{"role": "user", "content": "用户的实际需求"}
|
|
19
|
-
]
|
|
20
|
-
}'
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
返回标准 OpenAI 格式,结果在 `choices[0].message.content`。
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 默认模型选择(重要)
|
|
28
|
-
|
|
29
|
-
AIXX 会自动选最优模型,但 agent 也可以按任务指定。
|
|
30
|
-
|
|
31
|
-
> **模型列表持续更新,调 `GET /v1/models` 获取最新,下表仅场景参考。**
|
|
32
|
-
|
|
33
|
-
| 任务类型 | 推荐模型 | 理由 |
|
|
34
|
-
|---|---|---|
|
|
35
|
-
| 翻译/简单问答/日常 | `glm-4-flash` | 免费,日常首选 |
|
|
36
|
-
| 复杂推理/数学 | `kimi-k2.6` | 带思考过程(deepseek-reasoner 已下架) |
|
|
37
|
-
| 中文写作/文案 | `glm-4-plus` | GLM旗舰,中文质量档 |
|
|
38
|
-
| 长文档分析 | `moonshot-v1-128k` | 超长上下文 |
|
|
39
|
-
| 复杂任务/最强 | `claude-opus-4-
|
|
40
|
-
| 通用旗舰 | `gpt-5
|
|
41
|
-
| 审美/UI/设计 | (先搜索skill,见 search.md) | 专门skill比通用模型强 |
|
|
42
|
-
| agent/工具调用 | `deepseek-chat` | 支持 function calling(glm-4-flash 不支持) |
|
|
43
|
-
|
|
44
|
-
> ⚠️
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
| "
|
|
88
|
-
| "
|
|
89
|
-
| "
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
- ❌
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
1
|
+
# LLM 对话调用
|
|
2
|
+
|
|
3
|
+
翻译、写作、改写、总结、分析、问答、代码生成等**需要LLM能力**的请求。
|
|
4
|
+
|
|
5
|
+
**先读 [`./aixx-shared.md`](./aixx-shared.md) 了解环境检查和调用方式。**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 调用方式(OpenAI 兼容)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
curl -X POST {AIXX_BASE_URL}/chat/completions \
|
|
13
|
+
-H "Authorization: Bearer {AIXX_API_KEY}" \
|
|
14
|
+
-H "Content-Type: application/json" \
|
|
15
|
+
-d '{
|
|
16
|
+
"model": "glm-4-flash",
|
|
17
|
+
"messages": [
|
|
18
|
+
{"role": "user", "content": "用户的实际需求"}
|
|
19
|
+
]
|
|
20
|
+
}'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
返回标准 OpenAI 格式,结果在 `choices[0].message.content`。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 默认模型选择(重要)
|
|
28
|
+
|
|
29
|
+
AIXX 会自动选最优模型,但 agent 也可以按任务指定。
|
|
30
|
+
|
|
31
|
+
> **模型列表持续更新,调 `GET /v1/models` 获取最新,下表仅场景参考。**
|
|
32
|
+
|
|
33
|
+
| 任务类型 | 推荐模型 | 理由 |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| 翻译/简单问答/日常 | `glm-4-flash` | 免费,日常首选 |
|
|
36
|
+
| 复杂推理/数学 | `kimi-k2.6` | 带思考过程(deepseek-reasoner 已下架) |
|
|
37
|
+
| 中文写作/文案 | `glm-4-plus` | GLM旗舰,中文质量档 |
|
|
38
|
+
| 长文档分析 | `moonshot-v1-128k` | 超长上下文 |
|
|
39
|
+
| 复杂任务/最强 | `claude-opus-4-7` | 能力最强(调前先过 /v1/models 确认) |
|
|
40
|
+
| 通用旗舰 | `gpt-5` | 通用 |
|
|
41
|
+
| 审美/UI/设计 | (先搜索skill,见 search.md) | 专门skill比通用模型强 |
|
|
42
|
+
| agent/工具调用 | `deepseek-chat` | 支持 function calling(glm-4-flash 不支持) |
|
|
43
|
+
|
|
44
|
+
> ⚠️ **铁律:任何模型名先过 GET /v1/models 确认再调——渠道会上下架,下表只是参考(2026-10-12教训:文档推荐的 claude-sonnet-4-20250514 已无渠道)。**
|
|
45
|
+
> ⚠️ **推理类模型(kimi-k2.6 / claude系思考模型等)**:max_tokens 要给足(≥2000)。思考token计入max_tokens预算,给小了会返回空内容。
|
|
46
|
+
|
|
47
|
+
**不指定 model 时**:用 `glm-4-flash`(免费,省用户额度);需工具调用的 agent 场景用 `deepseek-chat`。
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 用户常见请求怎么处理
|
|
52
|
+
|
|
53
|
+
### "帮我翻译这段"
|
|
54
|
+
1. 用 `glm-4-flash`(翻译免费够用)
|
|
55
|
+
2. messages 里放:`把下面的内容翻译成英文:{用户的内容}`
|
|
56
|
+
|
|
57
|
+
### "用Claude分析这个"
|
|
58
|
+
1. 用户指定了Claude,用 `claude-sonnet-4-6` 或 `claude-opus-4-7`(模型名以 GET /v1/models 实时列表为准;调不通就自动降级 glm-4-flash 并如实告知用户)
|
|
59
|
+
2. 如果用户额度不够用Claude(402错误),提示用户"额度不足,要不要用glm-4-flash代替(免费)"
|
|
60
|
+
|
|
61
|
+
### "用最便宜的模型做"
|
|
62
|
+
1. 直接用 `deepseek-chat`
|
|
63
|
+
|
|
64
|
+
### "写个中文文案"
|
|
65
|
+
1. 用 `deepseek-chat`(中文能力够用且便宜;glm渠道维护中,恢复后可用 `glm-4-plus`)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## agent 该怎么做
|
|
70
|
+
|
|
71
|
+
1. 判断任务类型 → 选模型(或让AIXX自动选)
|
|
72
|
+
2. 把用户需求组织成 messages
|
|
73
|
+
3. 调 `/chat/completions`
|
|
74
|
+
4. 把 `choices[0].message.content` 转述给用户
|
|
75
|
+
5. **不要直接吐 JSON**,用自然语言回复
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## ⚠️ 敏感问题处理(重要·诚信红线)
|
|
80
|
+
|
|
81
|
+
有些问题**不要直接转给模型**,agent 要自己判断处理。否则模型会瞎编、损害信誉。
|
|
82
|
+
|
|
83
|
+
### 必须拦截的问题(别转给模型,agent 自己处理)
|
|
84
|
+
|
|
85
|
+
| 用户问 | ❌ 错误做法 | ✅ 正确做法 |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| "我账户还有多少钱""余额""额度" | 转给模型(模型会瞎说"无法查看") | **调 balance 接口**(见 account.md),用真实数据回答 |
|
|
88
|
+
| "我花了多少""用量" | 转给模型 | 调 billing/usage 接口 |
|
|
89
|
+
| "有哪些模型可用" | 转给模型 | 调 /v1/models 接口 |
|
|
90
|
+
| "怎么充值" | 转给模型 | 引导用 `aixx recharge` 命令 |
|
|
91
|
+
|
|
92
|
+
**原则**:凡是 AIXX 有接口能查到的事实,**必须调接口拿真实数据**,不能让模型猜。
|
|
93
|
+
|
|
94
|
+
### 身份/来源问题(转给模型,但要加 system 引导)
|
|
95
|
+
|
|
96
|
+
用户可能问:"你是哪家公司""你是DeepSeek吗""源头是哪里""是不是中转站""官方认证吗"。
|
|
97
|
+
|
|
98
|
+
**处理方式**:调模型时**必须加 system prompt 引导**,避免模型瞎编或撒谎:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
messages: [
|
|
102
|
+
{"role": "system", "content": "你是通过AIXX平台调用的AI助手。回答身份问题时遵守:
|
|
103
|
+
1. 如实说明自己的模型身份(是DeepSeek就说DeepSeek,是Claude就说Claude,不冒充别的)
|
|
104
|
+
2. 不编造'通过官网/APP/官方认证'等不实信息(你实际是通过AIXX统一平台调用的)
|
|
105
|
+
3. 被问到'是不是官方直连/中转站'时,如实回答:你是通过AIXX这个统一AI平台调用的,AIXX聚合了多家官方模型能力
|
|
106
|
+
4. 不主动暴露过多技术细节,但绝不撒谎
|
|
107
|
+
5. 翻译/写作涉及品牌:萬安/萬安算交所一律 AIXX,萬安算力百科=AIXX ComputePedia,禁 Wan'an/WanAn 拼音"},
|
|
108
|
+
{"role": "user", "content": "用户的身份问题"}
|
|
109
|
+
]
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**这样模型会**:
|
|
113
|
+
- 是DeepSeek就说DeepSeek(真话)
|
|
114
|
+
- 不再编"官网/APP/官方认证"(去掉幻觉)
|
|
115
|
+
- 被直接问中转时说"通过AIXX统一平台调用"(诚实但不生硬)
|
|
116
|
+
|
|
117
|
+
### 绝对不能做的事(诚信红线)
|
|
118
|
+
|
|
119
|
+
- ❌ 冒充别的模型(DeepSeek冒充Claude、套壳)—— 这是 apiyi 式造假,AIXX 永不做
|
|
120
|
+
- ❌ 说"官方认证""官方直连"等不实信息
|
|
121
|
+
- ❌ 把查得到的事实(余额/模型列表)让模型瞎猜
|
|
122
|
+
|
|
123
|
+
**AIXX 的信誉根基是:模型是真的,账本是实的。** 宁可少说,绝不撒谎。
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
维护者:龙龙(AIXX PM)| 2026-08-09 建立(2.0流量腿)
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 错误处理
|
|
131
|
+
|
|
132
|
+
见 [`./aixx-shared.md`](./aixx-shared.md) 的错误表。常见:
|
|
133
|
+
- 402 额度不足:提示用户充值("您额度不足,可以充值或用更便宜的deepseek-chat")
|
|
134
|
+
- 404 模型不存在:换用 `deepseek-chat`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
维护者:龙龙(AIXX PM)| 2026-08-09 建立
|