🤖从API到GPTs:一站式指南构建、部署和构建基于ChatGPT的智能药品说明书助手
2023-11-21
| 2023-12-1
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
本文详细介绍了如何使用FastAPI搭建一个药品说明书查询服务的后端API,如何通过Docker进行高效部署,以及如何使用Action集成到ChatGPT GPTs以增强服务的交互性和智能性。从数据库选择到域名配置,本指南为开发者提供了一系列步骤,帮助您快速上手并优化您的GPTs。
一开始天真的以为,ChatGPT GTPs的action应该和调用OpenAI的接口的function call一样。尝试创建了一个药品说明书助手机器人,发现不是那么回事。
notion image

私有服务准备

API搭建

使用FastAPI搭建后端服务,这里简单搭建,不涉及认证等代码。
当然,首先假设我们直接有了数据😂。数据示例如下(忽略表设计,表头不全):
notion image
简单方便,直接使用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

入口如图:
notion image
有两种方式构建GPTs,一种是和ChatGPT一问一答他(她,它?)来引导你。一种直接点config配置。
第一种引导完成之后会生成对应的config,后面可以直接修改,老手可能就化生prompt工程师直接调整prompt了。
notion image

添加action

一开始天真的按着网页上面的example写配置,后来发现,FastAPI可以直接生成OpenAPI(不是OpenAI)规范的json文件。是我眼拙,一开始以为OpenAI搞得自己的私有配置标准,这一点还是很Open🫡。
Privacy policy链接几天前还不用填,就可以save到public。有需求的可以生成一个贴上去。
notion image
FastAPI服务启动后进入文档页面可以点击如下链接,直接得到OpenAPI规范的配置,或者使用下面给到的脚本导出:
执行python export_openapi.py得到openapi.json直接贴入下图位置:
 
⚠️
ChatGPT调用接口依赖接口定义的path,summary,description等字段,相关字段定义需要符合接口语义,这样ChatGPT才会自己按照prompt理解去执行调用哪个接口以及传递什么参数。

调试

notion image

样例

notion image
notion image
notion image
💡
欢迎您在底部评论区留言,一起交流~
  • GPT
  • ChatGPT
  • vLLM分布式多GPU Docker部署踩坑记[bug] vllm低资源部署服务运行一段时间后卡死
    Loading...
    目录