type
status
date
slug
summary
tags
category
icon
password
本文详细介绍了如何使用FastAPI搭建一个药品说明书查询服务的后端API,如何通过Docker进行高效部署,以及如何使用Action集成到ChatGPT GPTs以增强服务的交互性和智能性。从数据库选择到域名配置,本指南为开发者提供了一系列步骤,帮助您快速上手并优化您的GPTs。
一开始天真的以为,ChatGPT GTPs的action应该和调用OpenAI的接口的function call一样。尝试创建了一个药品说明书助手机器人,发现不是那么回事。
私有服务准备
API搭建
使用FastAPI搭建后端服务,这里简单搭建,不涉及认证等代码。
当然,首先假设我们直接有了数据😂。数据示例如下(忽略表设计,表头不全):
简单方便,直接使用sqlite数据库方式储存数据及提供数据查询。
废话少说,直接给出代码:
fastapi新版本对于event有比较大的改动,之前采用的是14-21方式来建立数据库连接池。新版本采用lifespan。不过简单点直接撸也可以。
服务部署
采用Docker打包部署,服务上线还需要涉及代码编译,多阶段构建减少镜像体积等操作,这里也直接给出简单的实现:
打包:
启动服务:
docker run …
反向代理及添加域名
这里使用简单好用的caddy,自动添加证书。具体细节不展开了。
简单来说,就是将,使用Caddy接管从外部发来的请求,然后转发到上一步启动的FastAPI服务。
示意图略,文字写得很清楚。
也就是我们访问接口不是通过IP:Port的方式了,使用的是Domain的方式(80-http,443-https端口默认省略)
action里面API使用IP会提示错误,不支持裸IP的方式,必须使用域名。而且是https,需要证书,使用Caddy会自动帮你申请证书。这里不展开。
创建GPTs
入口如图:
有两种方式构建GPTs,一种是和ChatGPT一问一答他(她,它?)来引导你。一种直接点config配置。
第一种引导完成之后会生成对应的config,后面可以直接修改,老手可能就化生prompt工程师直接调整prompt了。
添加action
一开始天真的按着网页上面的example写配置,后来发现,FastAPI可以直接生成OpenAPI(不是OpenAI)规范的json文件。是我眼拙,一开始以为OpenAI搞得自己的私有配置标准,这一点还是很Open🫡。
Privacy policy链接几天前还不用填,就可以save到public。有需求的可以生成一个贴上去。
FastAPI服务启动后进入文档页面可以点击如下链接,直接得到OpenAPI规范的配置,或者使用下面给到的脚本导出:
执行
python export_openapi.py
得到openapi.json
直接贴入下图位置:ChatGPT调用接口依赖接口定义的path,summary,description等字段,相关字段定义需要符合接口语义,这样ChatGPT才会自己按照prompt理解去执行调用哪个接口以及传递什么参数。
调试
样例
欢迎您在底部评论区留言,一起交流~