Files
api_health/agent/skills/baidu-ai-map/SKILL.md
2026-05-30 16:41:26 +08:00

243 lines
8.1 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.
---
name: baidu-ai-map
description: 为Agent提供地图和位置相关的能力例如 AI 地点检索周边信息、AI 路线规划、地理编码与逆地理编码、天气查询等地图工具。
---
# 百度地图服务 Agent Plan
提供大模型友好调用的地图工具skills/baidu-ai-map/SKILL.md支持POI搜索、导航、语义化 AI 搜索、语义化 AI 路线规划、地理编码与逆地理编码、天气查询。
## 使用准则
### 准则 1API 端点
所有能力统一使用:
> **Base URL**: `https://api.map.baidu.com/`
### 准则 2SK 凭证安全处理
SKService 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工具避免直接调用curlcurl在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 位
#### 鉴权
- GETHeader `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` 等工具获取
#### 鉴权
- GETHeader `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:
- 地址越完整,解析越稳定
#### 鉴权
- GETHeader `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 位
#### 鉴权
- GETHeader `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 位
#### 鉴权
- GETHeader `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查阅如何传参