首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【腾讯位置服务开发者征文大赛】AI+腾讯位置服务:智能行程规划助手精简版 前言

【腾讯位置服务开发者征文大赛】AI+腾讯位置服务:智能行程规划助手精简版 前言

原创
作者头像
用户11966657
发布2026-05-08 18:32:22
发布2026-05-08 18:32:22
1130
举报

前言

周末和朋友聚会,光是规划行程就要花掉一晚上?要一个个查每个人的位置,找汇合点,筛选餐厅,规划路线,传统的地图工具根本处理不了这么复杂的需求?

别担心,今天我们就用腾讯位置服务的地图能力,结合大模型的工具调用能力,只用 1000 行代码,做一个智能行程规划助手,用户只需要输入一句话,剩下的所有事情,系统自动搞定。

整体架构设计

整个系统我们设计了一套非常简洁的四层架构,把 AI 和地图能力完美解耦:

  • 用户交互层:前端页面,支持自然语言输入,地图可视化展示结果
  • AI 调度层:大模型负责解析用户意图,自动调用地图工具
  • 地图能力层:基于腾讯位置服务的 API,提供真实的地图数据
  • 缓存层:缓存常用结果,提升响应速度

第一步:接入腾讯位置服务能力

首先我们需要去腾讯位置服务官网申请一个开发者密钥,免费额度就足够我们个人开发用了。

我们在项目里主要用到了这四个核心 API:

  1. 地理编码:把地址转成经纬度
  2. POI 检索:搜索周边的餐厅、景点等兴趣点
  3. 路线规划:计算两点之间的出行路线
  4. 距离矩阵:批量计算多个点之间的距离和时间

核心的调用代码非常简单:

代码语言:javascript
复制
import requests

TENCENT_KEY = "YOUR_KEY"

def geocode(address):
    """地址转坐标"""
    url = "https://apis.map.qq.com/ws/geocoder/v1/"
    resp = requests.get(url, params={"address": address, "key": TENCENT_KEY})
    res = resp.json()
    return res["result"]["location"]["lat"], res["result"]["location"]["lng"]

def search_poi(lat, lng, keyword, radius=5000):
    """周边POI搜索"""
    url = "https://apis.map.qq.com/ws/place/v1/search"
    params = {
        "boundary": f"nearby({lat},{lng},{radius})",
        "keyword": keyword,
        "key": TENCENT_KEY
    }
    resp = requests.get(url, params=params)
    return resp.json()["data"]

def distance_matrix(from_points, to_points):
    """距离矩阵计算"""
    url = "https://apis.map.qq.com/ws/distance/v1/matrix"
    from_str = ";".join([f"{lat},{lng}" for lat,lng in from_points])
    to_str = ";".join([f"{lat},{lng}" for lat,lng in to_points])
    resp = requests.get(url, params={"from":from_str, "to":to_str, "key":TENCENT_KEY})
    return resp.json()["result"]

第二步:让大模型学会用地图

有了地图能力之后,我们要让大模型能够自动使用这些能力,处理用户的自然语言需求,这就是工具调用的能力。

整个流程非常清晰:

我们给大模型定义了几个工具,让它可以调用:

代码语言:javascript
复制
[
    {
        "type": "function",
        "function": {
            "name": "recommend_meeting_point",
            "description": "为多个用户推荐最合适的汇合点",
            "parameters": {
                "type": "object",
                "properties": {
                    "user_addresses": {"type": "array", "description": "用户的地址列表"},
                    "poi_type": {"type": "string", "description": "汇合点的类型,比如川菜馆"}
                }
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "optimize_route",
            "description": "优化多目的地的路线顺序,避免绕路",
            "parameters": {
                "type": "object",
                "properties": {
                    "destinations": {"type": "array", "description": "目的地列表"}
                }
            }
        }
    }
]

再配上简单的 Prompt,告诉大模型所有和位置相关的问题都必须调用工具,不能自己编造,大模型的工具调用准确率就能达到 95% 以上。

核心功能:解决出行的痛点

1. 多目的地路线优化,帮你少走 3 公里路

当你有多个目的地的时候,手动规划很容易绕路,我们用贪心 + 2-opt 算法,自动优化路线顺序,帮你找到最短的路线:

可以看到,原来的手动路线要 10.2 公里,AI 优化之后只需要 6.8 公里,一下子节省了 3 公里的路程,差不多 10 分钟的时间。

2. 多人汇合点推荐,找到真正公平的中间点

朋友聚会最头疼的就是找汇合点,几何中点根本没用,我们用腾讯的距离矩阵,计算每个候选点到所有用户的真实出行时间,找到最公平的点:

比如三个用户分别在南山、福田、宝安,系统自动推荐车公庙的川菜馆,每个人的出行时间都很均衡,不会有人要跑很远的路。

3. 自然语言交互,一句话搞定所有需求

用户根本不需要填任何参数,只需要输入自己的需求就可以了:

我和两个朋友分别在深圳南山区腾讯大厦、福田区市民中心、宝安区宝安中心,想找个中间的川菜馆吃饭,然后下午去南山博物馆,晚上去深圳湾公园。

系统自动完成所有事情:解析地址、找汇合点、规划路线、整理结果,不到 10 秒就返回了完整的行程:

代码语言:javascript
复制
已经为你规划好行程:
1. 汇合点:福田区川味居火锅,评分4.7
   - 南山的朋友:15分钟车程
   - 福田的朋友:12分钟车程
   - 宝安的朋友:22分钟车程
2. 饭后到南山博物馆:18分钟车程
3. 下午到深圳湾公园:12分钟车程,刚好赶上日落

所有的路线和标记点都会自动展示在地图上,用户可以直观地看到整个行程。

完整可运行代码

整个项目的代码非常简单,你只需要替换成自己的 Key,就可以直接运行:

后端(FastAPI)

代码语言:javascript
复制
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import requests
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["*"])
TENCENT_MAP_KEY = "YOUR_TENCENT_MAP_KEY"

# 上面的地理编码、POI搜索、距离矩阵的函数放在这里

@app.post("/api/plan")
async def plan(req):
    # 大模型处理逻辑,自动调用工具,返回结果
    return result

前端(HTML)

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <script src="https://map.qq.com/api/gljs?v=1.exp&key=YOUR_KEY"></script>
    <style>
        #container {width:100%; height:600px;}
    </style>
</head>
<body>
    <input id="input" placeholder="输入你的出行需求">
    <button onclick="plan()">生成行程</button>
    <div id="container"></div>
    <script>
        // 初始化地图,添加标记点和路线的代码
    </script>
</body>
</html>

你只需要安装fastapiuvicorn,运行后端,打开前端页面就可以测试了,整个项目不到 1000 行代码,却能实现非常强大的功能。

总结

通过腾讯位置服务的强大地图能力,结合大模型的 AI 能力,我们只用很少的代码,就做了一个非常实用的智能行程规划助手,解决了多人出行、多目的地规划这些传统工具解决不了的痛点。

未来我们还会加入实时路况、门票预约、小程序版本这些功能,让出行变得越来越简单,如果你感兴趣的话,也可以自己动手试试哦。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 整体架构设计
  • 第一步:接入腾讯位置服务能力
  • 第二步:让大模型学会用地图
  • 核心功能:解决出行的痛点
    • 1. 多目的地路线优化,帮你少走 3 公里路
    • 2. 多人汇合点推荐,找到真正公平的中间点
    • 3. 自然语言交互,一句话搞定所有需求
  • 完整可运行代码
    • 后端(FastAPI)
    • 前端(HTML)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档