Dify实现基于地理位置的附近门店智能推荐Agent

阿敏大大_8974

阿敏大大_8974

2026-11-09

165人浏览

原创

必须接入地理坐标解析与距离计算能力并结构化注入提示词,否则AI Agent仅能返回泛化响应;需准备含门店名称、地址、经纬度(十进制)的CSV,上传时启用向量化并按行分割;配置HTTP工具get_user_location获取IP定位,响应JSON须含严格命名的latitude和longitude字段;再通过Python工具calculate_distance或SQL预计算实现Haversine距离排序。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

dify实现基于地理位置的附近门店智能推荐agent

要让Dify中的AI Agent能根据用户当前地理位置,实时推荐附近门店,必须先在后端服务中接入地理坐标解析与距离计算能力,再将结果结构化注入提示词上下文,否则Agent只能返回“请提供位置”这类泛化响应。

准备带经纬度的门店数据源

从门店管理系统导出CSV文件,字段必须包含:门店名称、地址、经度(longitude)、纬度(latitude),缺一不可。经度纬度必须为十进制数值格式(如116.4809, 39.9896),不能是“东经116°28′”这类字符串——Dify不支持自动地理编码转换。

将CSV上传至Dify知识库时,勾选【启用向量化】并选择【按行分割】,确保每家门店作为独立chunk被索引。这一步不做,后续检索会把所有门店混成一团,无法做距离排序。

配置自定义工具获取用户实时位置

在Dify工作区→Agent→工具→+添加工具,选择【HTTP请求】类型。

填写工具名称为“get_user_location”,描述写“获取调用方IP对应的城市级地理位置及粗略经纬度”,URL填你已部署的定位接口,例如https://api.yourservice.com/v1/location?ip={ip}。注意:该接口必须支持跨域(CORS),否则前端调用会失败。

参数设置中,将ip设为“从上下文提取”,变量名填user_ip;响应体需返回JSON,且必须含latitude和longitude字段,字段名大小写必须完全匹配——Dify工具解析器严格区分大小写,写成lat或Lng会导致坐标为空。

构建地理距离排序逻辑链

方法一:用Python代码工具封装Haversine计算

新建工具【calculate_distance】,类型选【Python代码】,粘贴以下代码:

import math
def run(user_lat, user_lng, store_lat, store_lng):
  R = 6371
  dlat = math.radians(float(store_lat) - float(user_lat))
  dlng = math.radians(float(store_lng) - float(user_lng))
  a = (math.sin(dlat/2)**2 +
    math.cos(math.radians(float(user_lat))) * math.cos(math.radians(float(store_lat))) *
    math.sin(dlng/2)**2)
  c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
  return round(R * c, 1)

Openclaw Proactive Agent Lite
Openclaw Proactive Agent Lite

将 AI 代理从任务追随者转变为主动合作伙伴,具备记忆架构、反向提示和自愈模式。轻量版...

下载

这个函数必须命名为run,参数顺序不能颠倒,否则Dify调用时报错missing 1 required positional argument。

方法二:用SQL知识库预计算+过滤

在知识库高级设置中启用【SQL查询】,编写查询语句:SELECT name, address, ROUND(6371 * ACOS(COS(RADIANS({{user_lat}})) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS({{user_lng}})) + SIN(RADIANS({{user_lat}})) * SIN(RADIANS(latitude))), 1) AS distance_km FROM stores WHERE distance_km 。注意:{{user_lat}}和{{user_lng}}必须与工具返回字段名一致,且SQL中不能出现中文别名,否则Dify解析失败。

组装Agent提示词与执行流

第一步:在Agent系统提示词顶部插入变量声明:{{user_location = tools.get_user_location()}}。这行必须放在所有业务逻辑之前,否则后续步骤读不到坐标值。

第二步:在知识库检索指令中加入地理约束,写成:“仅检索与user_location.latitude和user_location.longitude直线距离≤3km的门店,按距离升序返回前3家”。Dify的向量检索本身不支持地理过滤,这句话的作用是引导LLM在召回结果中主动筛除远距离门店——这是绕过技术限制的关键软性控制。

第三步:在最终回复模板中嵌入结构化输出指令:“用Markdown表格返回:| 店铺名 | 地址 | 距离(km) | 营业状态 |”,其中“距离(km)”列必须调用tools.calculate_distance(...)计算得出,不能直接用知识库原始字段——原始数据里的“距离”是静态录入值,不是用户实时位置出发的真实距离。

第四步:保存Agent并点击【调试】,在输入框中手动传入测试参数:{"user_ip": "114.247.112.18"}。如果返回结果里距离全为0或报NoneType错误,说明get_user_location工具返回的JSON缺少latitude字段,需立刻检查后端接口响应体。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

dify agent 地理位置

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Dify 本地部署与企业配置
Dify 本地部署与企业配置

本专题系统讲解 Dify 从零开始的本地部署方法与企业环境配置实践,涵盖 Docker 安装、依赖准备、数据库初始化、反向代理、参数调优、安全加固与多用户开通,帮助开发者与企业团队快速搭建稳定可用的 Dify 平台。

2026.06.05

997

15

Dify Agent智能体开发实战教程
Dify Agent智能体开发实战教程

本专题聚焦 Dify Agent 智能体的设计与开发,涵盖 Agent 模式选择、工具集成、提示词设计、多步推理、上下文记忆与多 Agent 协作,帮助开发者构建可执行复杂业务任务的智能体应用。

2026.06.05

285

15

Dify RAG知识库构建实战教程
Dify RAG知识库构建实战教程

本专题围绕 Dify RAG 知识库的全流程实践展开,从文档导入、分段切片、向量化到混合检索、重排优化与召回评估,帮助你打造高准确率、低幻觉的企业知识问答应用。

2026.06.05

276

15

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

20

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

20

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

20

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

40

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

20

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

40

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Dify零基础教程
Dify零基础教程

共0课时 | 159人学习

学习Agent,从Dify开始
学习Agent,从Dify开始

共0课时 | 161人学习

Dify 部署与运维指南
Dify 部署与运维指南

共0课时 | 0人学习