iconsulting/docs/AGENT_TOOLS.md

553 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# iConsulting Agent 工具文档
本文档详细描述了 iConsulting 移民咨询 Agent 可使用的所有工具。
## 工具概览
| 工具名称 | 类别 | 描述 |
|---------|------|------|
| search_knowledge | 知识与记忆 | 搜索移民知识库 |
| check_off_topic | 知识与记忆 | 检测离题问题 |
| collect_assessment_info | 知识与记忆 | 收集评估信息 |
| generate_payment | 知识与记忆 | 生成支付二维码 |
| save_user_memory | 知识与记忆 | 保存用户记忆 |
| get_user_context | 知识与记忆 | 获取用户上下文 |
| get_current_datetime | 实时查询 | 获取当前时间 |
| web_search | 实时查询 | 网络搜索 |
| get_exchange_rate | 实时查询 | 汇率查询 |
| fetch_immigration_news | 实时查询 | 获取移民新闻 |
---
## 知识与记忆工具
### 1. search_knowledge
搜索香港移民相关知识库,获取最新的政策信息和常见问题解答。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| query | string | ✅ | 搜索查询内容 |
| category | string | ❌ | 移民类别代码 |
**category 可选值**:
- `QMAS` - 优才计划
- `GEP` - 专才计划
- `IANG` - 留学IANG
- `TTPS` - 高才通计划
- `CIES` - 投资移民
- `TECHTAS` - 科技人才入境计划
**返回格式**:
```json
{
"success": true,
"content": "检索到的知识内容",
"sources": [
{
"articleId": "xxx",
"title": "文章标题",
"similarity": 0.85
}
],
"userContext": ["用户相关记忆"],
"relatedExperiences": ["相关系统经验"],
"message": "找到 3 条相关知识"
}
```
**实现说明**:
- 调用 knowledge-service 的 `/api/v1/knowledge/retrieve` API
- 支持向量相似度搜索
- 自动关联用户记忆和系统经验
- 如 API 不可用,返回 `success: false` 并建议基于内置知识回答
---
### 2. check_off_topic
检查用户的问题是否与香港移民相关,用于判断是否需要拒绝回答。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| question | string | ✅ | 用户的问题 |
**返回格式**:
```json
{
"isOffTopic": true,
"confidence": 0.92,
"suggestion": "这个问题似乎与香港移民无关。作为移民咨询顾问,我专注于香港各类移民政策的咨询。请问您有香港移民相关的问题吗?"
}
```
**实现说明**:
- 调用 knowledge-service 的 `/api/v1/knowledge/check-off-topic` API
- 使用向量相似度判断问题是否属于移民领域
- confidence 表示判断置信度 (0-1)
- 如 API 不可用,默认返回 `isOffTopic: false`
---
### 3. collect_assessment_info
收集用户的个人信息用于移民资格评估。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| category | string | ✅ | 用户感兴趣的移民类别 |
| age | number | ❌ | 用户年龄 |
| education | string | ❌ | 最高学历 |
| university | string | ❌ | 毕业院校 |
| yearsOfExperience | number | ❌ | 工作年限 |
| currentJobTitle | string | ❌ | 当前职位 |
| industry | string | ❌ | 所属行业 |
| annualIncome | number | ❌ | 年收入(人民币) |
| hasHKEmployer | boolean | ❌ | 是否有香港雇主 |
**返回格式**:
```json
{
"success": true,
"collectedInfo": {
"category": "QMAS",
"age": 35,
"education": "硕士",
"yearsOfExperience": 10
},
"message": "已记录您的信息。如需完整评估,请选择付费评估服务。",
"nextStep": "payment"
}
```
**实现说明**:
- 收集的信息自动保存到用户记忆 (importance: 80)
- 用于后续付费评估服务
- 信息以 `FACT` 类型存储
---
### 4. generate_payment
为付费评估服务生成支付二维码。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| serviceType | string | ✅ | 服务类型,目前仅支持 `ASSESSMENT` |
| category | string | ✅ | 移民类别 |
| paymentMethod | string | ✅ | 支付方式 |
**paymentMethod 可选值**:
- `ALIPAY` - 支付宝
- `WECHAT` - 微信支付
- `CREDIT_CARD` - 信用卡
**各类别价格**:
| 类别 | 价格 (CNY) |
|------|-----------|
| QMAS | 99 |
| GEP | 99 |
| IANG | 79 |
| TTPS | 99 |
| CIES | 199 |
| TECHTAS | 99 |
**返回格式**:
```json
{
"success": true,
"orderId": "ORD_1706012345678",
"amount": 99,
"currency": "CNY",
"paymentMethod": "ALIPAY",
"qrCodeUrl": "https://...",
"expiresAt": "2024-01-23T12:30:00.000Z",
"message": "请扫描二维码支付 ¥99 完成QMAS类别的移民资格评估服务"
}
```
**实现说明**:
- 用户付费意向自动保存到记忆 (INTENT 类型, importance: 90)
- 二维码有效期 30 分钟
- TODO: 对接实际支付服务
---
### 5. save_user_memory
保存用户的重要信息到长期记忆,以便后续对话中记住用户情况。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| memoryType | string | ✅ | 记忆类型 |
| content | string | ✅ | 要记住的内容 |
| category | string | ❌ | 相关的移民类别 |
**memoryType 可选值**:
- `FACT` - 用户陈述的事实(如:年龄、学历、工作经验)
- `PREFERENCE` - 用户偏好(如:偏好的移民方式)
- `INTENT` - 用户意图(如:计划移民的时间)
**importance 自动设置**:
- FACT: 70
- INTENT: 80
- PREFERENCE: 60
**返回格式**:
```json
{
"success": true,
"memoryId": "mem_xxx",
"message": "已记住您的信息,下次对话时我会记得"
}
```
**实现说明**:
- 调用 knowledge-service 的 `/api/v1/memory/user` API
- 数据存储到 PostgreSQL + Neo4j
- 支持跨会话记忆
---
### 6. get_user_context
获取用户的历史背景信息和之前的对话记忆,帮助提供更个性化的建议。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| query | string | ✅ | 当前问题,用于检索相关记忆 |
**返回格式**:
```json
{
"success": true,
"memories": [
{
"type": "FACT",
"content": "用户35岁硕士学历10年工作经验",
"importance": 80
},
{
"type": "INTENT",
"content": "用户对QMAS优才计划感兴趣",
"importance": 75
}
],
"message": "找到 2 条用户背景信息"
}
```
**实现说明**:
- 并行获取相关记忆和重要记忆
- 相关记忆:基于 query 向量搜索 (limit: 3)
- 重要记忆:按 importance 排序 (limit: 5)
- 自动去重合并
---
## 实时查询工具
### 7. get_current_datetime
获取当前的日期和时间,用于回答与时间相关的问题。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| timezone | string | ❌ | 时区 | Asia/Hong_Kong |
| format | string | ❌ | 返回格式 | full |
**format 可选值**:
- `full` - 完整日期时间
- `date` - 仅日期
- `time` - 仅时间
**返回格式**:
```json
{
"success": true,
"datetime": "2024年1月23日星期二 14:30:00",
"timezone": "Asia/Hong_Kong",
"timestamp": "2024-01-23T06:30:00.000Z",
"message": "当前Asia/Hong_Kong时间: 2024年1月23日星期二 14:30:00"
}
```
**实现说明**:
- 使用 JavaScript Intl.DateTimeFormat
- 支持任意 IANA 时区
- 默认使用香港时区
---
### 8. web_search
搜索互联网获取最新信息,用于查询移民政策变更、新闻动态等实时内容。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| query | string | ✅ | 搜索关键词 | - |
| site | string | ❌ | 限定搜索网站 | - |
| language | string | ❌ | 搜索语言 | zh-CN |
**language 可选值**:
- `zh-CN` - 简体中文
- `zh-TW` - 繁体中文
- `en` - 英文
**常用 site 值**:
- `immd.gov.hk` - 香港入境事务处
- `talentservicewindow.gov.hk` - 香港人才服务窗口
**返回格式**:
成功时:
```json
{
"success": true,
"query": "香港优才计划最新政策",
"results": [
{
"title": "优秀人才入境计划 - 入境事务处",
"url": "https://www.immd.gov.hk/...",
"snippet": "优秀人才入境计划是一项设有配额的移民吸纳计划..."
}
],
"resultCount": 5,
"message": "找到 5 条相关结果"
}
```
降级时:
```json
{
"success": false,
"query": "香港优才计划最新政策",
"results": [],
"message": "搜索服务暂时不可用。建议您访问以下官方网站获取最新信息:",
"suggestedSites": [
{ "name": "香港入境事务处", "url": "https://www.immd.gov.hk" },
{ "name": "香港人才服务窗口", "url": "https://www.talentservicewindow.gov.hk" },
{ "name": "投资推广署", "url": "https://www.investhk.gov.hk" }
]
}
```
**环境变量**:
- `GOOGLE_SEARCH_API_KEY` - Google Custom Search API Key
- `GOOGLE_CSE_ID` - Google Custom Search Engine ID
**实现说明**:
- 优先使用 Google Custom Search API
- 如未配置 API Key返回官方网站建议
- 每次请求返回最多 5 条结果
---
### 9. get_exchange_rate
查询实时货币汇率,用于投资移民金额换算等场景。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| from | string | ✅ | 源货币代码 |
| to | string | ✅ | 目标货币代码 |
| amount | number | ❌ | 要转换的金额 |
**常用货币代码**:
- `CNY` - 人民币
- `HKD` - 港币
- `USD` - 美元
**返回格式**:
实时汇率:
```json
{
"success": true,
"from": "CNY",
"to": "HKD",
"rate": 1.0823,
"amount": 3000000,
"convertedAmount": 3246900,
"lastUpdate": "2024-01-23T00:00:00Z",
"message": "3000000 CNY = 3246900.00 HKD (汇率: 1.0823)"
}
```
降级汇率:
```json
{
"success": true,
"from": "CNY",
"to": "HKD",
"rate": 1.08,
"amount": 3000000,
"convertedAmount": 3240000,
"isEstimate": true,
"message": "参考汇率 (可能有偏差): 1 CNY ≈ 1.08 HKD3000000 CNY ≈ 3240000.00 HKD"
}
```
**环境变量**:
- `EXCHANGE_RATE_API_KEY` - Exchange Rate API Key (可选)
**降级汇率表**:
| From | To | Rate |
|------|-----|------|
| CNY | HKD | 1.08 |
| CNY | USD | 0.14 |
| USD | HKD | 7.78 |
| USD | CNY | 7.24 |
| HKD | CNY | 0.93 |
| HKD | USD | 0.13 |
**实现说明**:
- 优先使用 Exchange Rate API (v6 或 v4)
- v4 API 免费,无需 API Key
- 如 API 不可用,使用内置降级汇率
- 降级汇率会标记 `isEstimate: true`
---
### 10. fetch_immigration_news
获取香港移民相关的最新新闻和政策公告。
**输入参数**:
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| category | string | ❌ | 移民类别 | ALL |
| limit | number | ❌ | 返回条数 | 5 |
**category 可选值**:
- `QMAS` - 优才计划
- `GEP` - 专才计划
- `IANG` - 留学IANG
- `TTPS` - 高才通计划
- `CIES` - 投资移民
- `TECHTAS` - 科技人才入境计划
- `ALL` - 所有类别
**返回格式**:
动态新闻:
```json
{
"success": true,
"category": "QMAS",
"news": [...],
"message": "获取到 3 条QMAS相关移民新闻"
}
```
静态参考:
```json
{
"success": true,
"category": "QMAS",
"news": [
{
"title": "优才计划持续接受申请",
"summary": "香港优才计划无配额限制,全年接受申请。申请人需符合基本资格要求,并通过计分制评核。",
"date": "2024-01",
"source": "香港入境事务处"
}
],
"isStatic": true,
"message": "以下是QMAS类别的参考信息。如需最新资讯请访问香港入境事务处官网。",
"officialSources": [
{ "name": "香港入境事务处", "url": "https://www.immd.gov.hk/hks/services/visas/admission_talents.html" },
{ "name": "香港人才服务窗口", "url": "https://www.talentservicewindow.gov.hk" }
]
}
```
**实现说明**:
- 优先从 knowledge-service 获取新闻
- 调用 `/api/v1/news/immigration` API
- 如服务不可用,返回静态参考信息
- 静态信息会标记 `isStatic: true`
---
## 工具调用流程
```
用户消息 → ClaudeAgentService.sendMessage()
构建系统提示词 (含工具列表)
调用 Claude API (带 tools 参数)
Claude 决定是否调用工具
如需调用 → ImmigrationToolsService.executeTool()
工具执行返回结果
结果注入对话上下文
Claude 继续生成回复
循环直到无需更多工具调用
返回最终回复给用户
```
---
## 配置环境变量
```env
# Knowledge Service
KNOWLEDGE_SERVICE_URL=http://knowledge-service:3003
# Google Search (可选)
GOOGLE_SEARCH_API_KEY=your_api_key
GOOGLE_CSE_ID=your_cse_id
# Exchange Rate (可选)
EXCHANGE_RATE_API_KEY=your_api_key
```
---
## 相关文件
- [immigration-tools.service.ts](../packages/services/conversation-service/src/infrastructure/claude/tools/immigration-tools.service.ts) - 工具定义与实现
- [system-prompt.ts](../packages/services/conversation-service/src/infrastructure/claude/prompts/system-prompt.ts) - 系统提示词
- [claude-agent.service.ts](../packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts) - Agent 核心服务
- [knowledge-client.service.ts](../packages/services/conversation-service/src/infrastructure/knowledge/knowledge-client.service.ts) - Knowledge Service 客户端
---
*文档更新时间: 2026-01-23*