名称: 本地地点 描述: 通过本地Google Places API代理搜索地点(餐厅、咖啡馆等)。 主页: https://github.com/Hyaxia/local_places 元数据: { “otto”: { “emoji”: “📍”, “requires”: { “bins”: [“uv”], “env”: [“GOOGLE_PLACES_API_KEY”] }, “primaryEnv”: “GOOGLE_PLACES_API_KEY”, }, }
📍 本地地点
查找地点,快速行动
使用本地Google Places API代理搜索附近地点。两步流程:先解析位置,然后搜索。
设置
cd {baseDir}
echo "GOOGLE_PLACES_API_KEY=your-key" > .env
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000
需要在.env或环境中设置GOOGLE_PLACES_API_KEY。
快速开始
-
检查服务器:
curl http://127.0.0.1:8000/ping -
解析位置:
curl -X POST http://127.0.0.1:8000/locations/resolve \
-H "Content-Type: application/json" \
-d '{"location_text": "Soho, London", "limit": 5}'
- 搜索地点:
curl -X POST http://127.0.0.1:8000/places/search \
-H "Content-Type: application/json" \
-d '{
"query": "coffee shop",
"location_bias": {"lat": 51.5137, "lng": -0.1366, "radius_m": 1000},
"filters": {"open_now": true, "min_rating": 4.0},
"limit": 10
}'
- 获取详情:
curl http://127.0.0.1:8000/places/{place_id}
对话流程
- 如果用户说“near me”或给出模糊位置 → 先解析它
- 如果多个结果 → 显示编号列表,让用户选择
- 询问偏好:类型、是否营业、评分、价格水平
- 使用选定位置的
location_bias进行搜索 - 呈现结果,包括名称、评分、地址、营业状态
- 提供获取详情或精炼搜索的选项
过滤器约束
filters.types: 必须是一个类型(例如,“restaurant”、“cafe”、“gym”)filters.price_levels: 整数0-4(0=免费,4=非常昂贵)filters.min_rating: 0-5,以0.5递增filters.open_now: 布尔值limit: 搜索1-20,解析1-10location_bias.radius_m: 必须大于0
响应格式
{
"results": [
{
"place_id": "ChIJ...",
"name": "Coffee Shop",
"address": "123 Main St",
"location": { "lat": 51.5, "lng": -0.1 },
"rating": 4.6,
"price_level": 2,
"types": ["cafe", "food"],
"open_now": true
}
],
"next_page_token": "..."
}
使用next_page_token作为page_token在下一个请求中获取更多结果。