# Baidu AI Map

> 百度地图 Agent Plan ，无需成为百度地图开发者，立即接入百度地图为 Agent 场景原生设计的地图能力，例如 AI 地点检索、AI 路线规划、地理编码与逆地理编码、天气查询等地图能力等开箱即用的工具。

- Skill: `baidu-maps/baidu-ai-map` (Agent Skill)
- Install (CLI): `npx skillmds@latest add baidu-maps/baidu-ai-map`
- Raw SKILL.md: https://api.skillmd.com/api/skills/baidu-maps/baidu-ai-map/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: baidu-maps (https://skillmd.com/u/baidu-maps)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/baidu-maps/baidu-ai-map

---


# 百度地图服务 Agent Plan

提供大模型友好调用的地图工具，支持语义化 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=北京市"
```

## 全局参数与行为约束

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查阅如何传参
