在Dify中添加自定义工具
准备工作
本地化部署Dify
参照Dify官方指导使用Docker Compose部署
https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/docker-compose
Step1 Clone Dify 源码
在合适的位置,文件管理器上方地址栏输入cmd
,运行
git clone https://github.com/langgenius/dify.git
Step2 Start Dify
进入dify的docker目录
cd dify/docker
一键启动
docker compose up -d
Upgrade
cd dify/docker
git pull origin main
docker compose down
docker compose pull
docker compose up -d
使用python编写功能并暴露API
不过多赘述,可以使用FLASK或FASTAPI进行API暴露
from flask import Flask, request, jsonify
import random
import pymysql
app = Flask(__name__)
def connect():
conn = pymysql.connect(
host='localhost',
user=' your user name ',
password='your mySQL password',
database=' database name you want to use ',
charset='utf8'
)
if conn.open:
print('connected to database')
else:
print('failed to connect to database')
return conn
@app.route('/execute', methods=['POST'])
def execute_sql():
sql = request.json.get('sql', None)
if not sql:
return jsonify({'error': 'SQL query is required'}), 400
conn = connect()
try:
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
backstr = cursor.fetchall()
print(backstr)
# Convert the result to a list of dictionaries
return jsonify({'ans': backstr})
except pymysql.Error as e:
return jsonify({'error': str(e)}), 500
finally:
conn.close()
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8001)
使用ngrok进一步公示地址
这一步是因为本地化docker中部署Dify无法访问内网API,需要使用ngrok进行暴露。
进入ngrok官网,注册并下载,注册后可以拿到账户鉴权密文,按照官网指示进行一次本地化配置即可。
最后使用
ngrok.exe http [需要暴露的端口]
即可完成端口暴露
正式在Dify中创建自定义工具
openai schema
这部分可以参考给出的样例格式,直接让任意大模型(GPT-4、千问已测试可以完成)根据你的程序给出openai schema格式即可,最后将url地址换为ngrok暴露地址。
在下方可用工具中可以进行测试。