Simon Willison 1小时前 · 2026-09-15 17:05:08 · 0 阅读
用 GPT-6 Astra 和 ChatGPT Work 生成跑步路线
用 GPT-6 Astra 和 ChatGPT Work 生成跑步路线
2026年9月12日
今天上午,我让 ChatGPT Work 配合 GPT-6 Astra(Max 版本)完成了一个很有趣的任务:
我住在 <我的地址>。请利用 OSM 数据,为我规划 5 公里和 10 公里的环形跑步路线,起点均为我家。
任务耗时 27 分钟,结果完全符合预期,既生成了嵌入式可视化地图,也提供了可下载的 GPX 文件和 GeoJSON 文件。下面是 5 公里路线:

当我询问其生成路线的过程时,它回答:
我使用 Nominatim 定位地址,并通过 Overpass 下载本地 OpenStreetMap 道路和步道数据,随后在本地计算环路。
令人遗憾的是,实际运行的代码及操作细节在 ChatGPT 界面中对我不可见。我认为这种缺乏透明度的设计反而是一种反功能。
等我想到索要其所用 Python 代码的副本时,ChatGPT 已无法提供。这似乎是因为对话线程经过了压缩处理。我认为任何使用压缩机制的 LLM 系统,既要保留压缩前的文本,又要通过 Agent 工具调用使这些文本可访问,以避免此类问题。
至于地图的展示,它调用的是 visualize 技能。它创建了一个名为 /workspace/el-granada-5k-share.html 的文件,直接嵌入到 ChatGPT 界面中。
以下是 该 HTML 文件的副本,开头部分如下:
<div id="eg-share-loop">
<div class="viz-row"><h3>El Granada 港口环线</h3><span class="text-small">5.1 公里</span></div>
<div id="eg-share-stage"></div>
<div class="text-small text-muted">地图数据 © <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener">OpenStreetMap 贡献者</a></div>
<style>
#eg-share-loop { width:100%; }
#eg-share-loop #eg-share-stage { width:100%; margin:8px 0; }
#eg-share-loop .eg-share-map { display:block; width:100%; touch-action:none; }
#eg-share-loop .eg-share-map text { fill:var(--foreground); font-size:12px; font-weight:400; }
#eg-share-loop .eg-share-label { paint-order:stroke; stroke:var(--background); stroke-width:3px; stroke-linejoin:round; }
</style>
<script type="application/json" id="eg-share-data">{"route":{"type":"LineString","coordinates":[[-122.467425,37.4997753] ...</script>
<script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"></script>
<script>
(() => {
const root=document.getElementById('eg-share-loop');
<script type="application/json"> 元素包含了渲染跑步路线和地图本身所需的完整几何数据。渲染过程使用 D3,该库从本部分visualize 技能中描述的允许列表 CDN 位置加载:
外部资源
- CSP 仅允许
cdnjs.cloudflare.com、esm.sh、cdn.jsdelivr.net、unpkg.com、fonts.googleapis.com、fonts.gstatic.com和fonts.bunny.net。其他来源会被阻止且静默失败。
原始来源: Simon Willison