完善了agent
This commit is contained in:
243
agent/skills/baidu-ai-map/SKILL.md
Normal file
243
agent/skills/baidu-ai-map/SKILL.md
Normal file
@@ -0,0 +1,243 @@
|
||||
---
|
||||
name: baidu-ai-map
|
||||
description: 为Agent提供地图和位置相关的能力,例如 AI 地点检索(周边信息)、AI 路线规划、地理编码与逆地理编码、天气查询等地图工具。
|
||||
---
|
||||
|
||||
# 百度地图服务 Agent Plan
|
||||
|
||||
提供大模型友好调用的地图工具skills/baidu-ai-map/SKILL.md,支持POI搜索、导航、语义化 AI 搜索、语义化 AI 路线规划、地理编码与逆地理编码、天气查询。
|
||||
|
||||
## 使用准则
|
||||
|
||||
### 准则 1:API 端点
|
||||
|
||||
所有能力统一使用:
|
||||
|
||||
> **Base URL**: `https://api.map.baidu.com/`
|
||||
|
||||
### 准则 2:SK 凭证安全处理
|
||||
|
||||
SK(Service Key)是调用所有 API 的必须凭证:
|
||||
|
||||
1. 优先读取环境变量 `BAIDU_MAP_AUTH_TOKEN`。
|
||||
2. 如果为空,提示用户前往 [百度地图 Agent Plan](https://lbs.baidu.com/apiconsole/agentplan) 申请。
|
||||
3. 设置环境变量:
|
||||
|
||||
```bash
|
||||
export BAIDU_MAP_AUTH_TOKEN="你的SK"
|
||||
```
|
||||
|
||||
### 准则 3:统一鉴权方式(Header 传入)
|
||||
|
||||
调用所有 API 时,统一通过 Header 传入:
|
||||
|
||||
- `Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/place" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "user_raw_request=帮我找北京可带宠物的咖啡馆" \
|
||||
--data-urlencode "region=北京市"
|
||||
```
|
||||
|
||||
### 准则 4:优先使用http_get工具,避免直接调用curl,curl在window下支持不好
|
||||
|
||||
## 全局参数与行为约束
|
||||
|
||||
1. `user_raw_request` 必须是完整的用户需求,不可压缩为关键词。
|
||||
2. `user_raw_request` 出现“我附近”等非明确地点时,可根据上下文为用户推理为具体地点名称,但不可对坐标进行推理。
|
||||
3. `user_raw_request` 需保留定语/约束词,例如“评分最高”“最近”“最便宜”“3公里内”。
|
||||
4. 不得编造坐标;`center` / `location` / `refer_pois` 仅可来自用户明确提供或可信来源,当无可靠坐标时,必须先向用户澄清或先调用 `geocoding` / `place` 等工具获取。
|
||||
5. 统一使用 Header 鉴权:`Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`。
|
||||
6. 经纬度至少保留小数点后 6 位。
|
||||
7. 所有工具返回坐标类型统一为 `gcj02`。
|
||||
8. 禁止使用 grep/sed/awk/jq/python脚本 正则裁剪响应后再推断字段,这会造成百度地图 Agent Plan 巨额的token消耗;短时间内遇到相同或高度相似请求时,应优先基于结果直接推理,避免重复发起请求。
|
||||
9. `direction` 可能返回两类结果:路线结果,或起终点澄清结果。当返回起终点澄清结果时,应先根据用户需求推理最合理候选;若仍无法唯一确定,应引导用户在候选中选择后再继续规划。
|
||||
|
||||
## 工具详解
|
||||
|
||||
### 1. Place(语义化AI地点检索)
|
||||
|
||||
#### API
|
||||
|
||||
`GET /agent_plan/v1/place`
|
||||
|
||||
#### 参数输入(给模型)
|
||||
|
||||
Required:
|
||||
- `user_raw_request`: 用户原始需求,原样完整传入,不可压缩为关键词;保留约束词(如“评分最高”“最近”“3公里内”)
|
||||
- `region`: 城市或区域限制
|
||||
|
||||
Optional:
|
||||
- `center`: 检索中心点和排序参考点(`lat,lng`,gcj02)
|
||||
- `sort`: `distance` 或 `relevance`(默认 `relevance`)
|
||||
|
||||
Rules:
|
||||
- `sort=distance` 时,`center` 必传
|
||||
- `center` 只能来自用户明确提供或可信来源,禁止推测/编造,可通过 `geocoding` / `place` 等工具获取
|
||||
- 经纬度至少保留小数点后 6 位
|
||||
|
||||
#### 鉴权
|
||||
|
||||
- GET:Header `Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`
|
||||
|
||||
#### 示例
|
||||
|
||||
```bash
|
||||
# 1) 帮我查一下八达岭长城附近的五星级酒店
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/place" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "user_raw_request=帮我查一下八达岭长城附近的五星级酒店" \
|
||||
--data-urlencode "region=延庆区" \
|
||||
--data-urlencode "sort=relevance"
|
||||
|
||||
# 2) 离我最近的火锅店(distance 排序)
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/place" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "user_raw_request=离我最近的火锅店" \
|
||||
--data-urlencode "region=北京市" \
|
||||
--data-urlencode "center=40.056800,116.308300" \
|
||||
--data-urlencode "sort=distance"
|
||||
```
|
||||
|
||||
### 2. Direction(语义化AI路线规划)
|
||||
|
||||
#### API
|
||||
|
||||
`GET /agent_plan/v1/direction`
|
||||
|
||||
#### 参数输入
|
||||
|
||||
Required:
|
||||
- `user_raw_request`: 用户原始需求,包含起点和终点;保留路线约束词,需要推理并改写用户原始的交通方式
|
||||
- `location`: 用户当前位置坐标(`lat,lng`,gcj02)
|
||||
|
||||
Optional:
|
||||
- `refer_pois`: 地点精确映射,格式 `地点名称:uid,纬度,经度;地点名称:uid,纬度,经度`
|
||||
|
||||
Rules:
|
||||
- 当前仅支持驾车、步行、骑行、公交路线规划。`user_raw_request` 中出现其他交通方式时,需要改写到这四种交通方式
|
||||
- `location` 当起点有歧义(如同名地标、模糊起点)时,路线规划服务会基于当前位置推理最合理的起点位置
|
||||
- `refer_pois` 默认不传,用于同名地点消歧,仅在 `user_raw_request` 中明确有歧义地点时传入
|
||||
- `refer_pois` / `location` 的经纬度至少保留小数点后 6 位,禁止推测/编造,可通过 `geocoding` / `place` 等工具获取
|
||||
|
||||
#### 鉴权
|
||||
|
||||
- GET:Header `Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`
|
||||
|
||||
#### 示例
|
||||
|
||||
```bash
|
||||
# 1) 帮我规划从故宫到颐和园的驾车路线
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/direction" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "user_raw_request=帮我规划从故宫到颐和园的驾车路线" \
|
||||
--data-urlencode "location=39.914590,116.403770"
|
||||
|
||||
# 2) “我家”别名映射
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/direction" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "user_raw_request=步行去我家附近最近的中餐厅" \
|
||||
--data-urlencode "location=40.056800,116.308300" \
|
||||
--data-urlencode "refer_pois=我家:fbc88a21464370106e3e1b52,40.092180,116.345310"
|
||||
|
||||
# 2) 交通方式推理改写:从王府井打车去三里屯要多久
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/direction" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "user_raw_request=从王府井驾车去三里屯要多久" \
|
||||
--data-urlencode "location=39.914590,116.403770"
|
||||
```
|
||||
|
||||
### 3. Geocoding(地理编码)
|
||||
|
||||
#### API
|
||||
|
||||
`GET /agent_plan/v1/geocoding`
|
||||
|
||||
#### 参数输入
|
||||
|
||||
Required:
|
||||
- `address`: 要解析的完整地址
|
||||
|
||||
Optional:
|
||||
- `region`: 城市/区域提示(减少歧义)
|
||||
|
||||
Rules:
|
||||
- 地址越完整,解析越稳定
|
||||
|
||||
#### 鉴权
|
||||
|
||||
- GET:Header `Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`
|
||||
|
||||
#### 示例
|
||||
|
||||
```bash
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/geocoding" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "address=北京市海淀区上地十街10号百度大厦" \
|
||||
--data-urlencode "region=北京市"
|
||||
```
|
||||
|
||||
### 4. Reverse Geocoding(逆地理编码)
|
||||
|
||||
#### API
|
||||
|
||||
`GET /agent_plan/v1/reverse_geocoding`
|
||||
|
||||
#### 参数输入
|
||||
|
||||
Required:
|
||||
- `location`: `lat,lng` 格式坐标(gcj02)
|
||||
|
||||
Rules:
|
||||
- 经纬度至少保留小数点后 6 位
|
||||
|
||||
#### 鉴权
|
||||
|
||||
- GET:Header `Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`
|
||||
|
||||
#### 示例
|
||||
|
||||
```bash
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/reverse_geocoding" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "location=40.056800,116.308300"
|
||||
```
|
||||
|
||||
### 5. Weather(天气查询)
|
||||
|
||||
#### API
|
||||
|
||||
`GET /agent_plan/v1/weather`
|
||||
|
||||
#### 参数输入
|
||||
|
||||
Optional:
|
||||
- `region`: 行政区划名称
|
||||
- `location`: `lat,lng` 格式坐标(gcj02)
|
||||
|
||||
Rules:
|
||||
- `region` 与 `location` 至少传一个
|
||||
- `location` 传入时,经纬度至少保留小数点后 6 位
|
||||
|
||||
#### 鉴权
|
||||
|
||||
- GET:Header `Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN`
|
||||
|
||||
#### 示例
|
||||
|
||||
```bash
|
||||
# 1) 按坐标查询天气
|
||||
curl --get "https://api.map.baidu.com/agent_plan/v1/weather" \
|
||||
-H "Authorization: Bearer $BAIDU_MAP_AUTH_TOKEN" \
|
||||
--data-urlencode "location=38.766230,116.432130"
|
||||
```
|
||||
|
||||
## 错误处理
|
||||
|
||||
1. 如果缺少 token,提示用户执行:
|
||||
申请地址:https://lbs.baidu.com/apiconsole/agentplan
|
||||
`export BAIDU_MAP_AUTH_TOKEN="<YOUR_BAIDU_MAP_AUTH_TOKEN>"`
|
||||
2. 如果提示参数错误,重新阅读本Skills查阅如何传参
|
||||
Reference in New Issue
Block a user