为什么选择这三个组合
-
OpenAI官方SDK是Python,此开发语言首选Python
-
FastAPI是Python语言编写的高性能的现代化Web框架
-
LangChain是AI应用开发的主流框架,能方便的组合各种AI技术进行应用开发
-
MemFire Cloud提供Supabase托管,LangChain原生支持Supabase API
-
MemFire Cloud提供向量数据库支持,向量数据库是开发知识库应用的必选项
FastAPI介绍
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 开发。
关键特性:
-
快速:可与 NodeJS 和 Go 并肩的极高性能。最快的 Python web 框架之一。
-
高效编码:提高功能开发速度约 200% 至 300%。
-
更少 bug:减少约 40% 的人为(开发者)导致错误。
-
智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
-
简单:设计的易于使用和学习,阅读文档的时间更短。
-
简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
-
健壮:生产可用级别的代码。还有自动生成的交互式文档。
-
标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI(以前被称为 Swagger) 和 JSON Schema。
官方文档:https://fastapi.tiangolo.com/zh/
ChatGPT介绍
准确来说ChatGPT只是openai基于GPT模型开发的一个应用,只不过这个词更流行,更广为人知。对于开发者来说,更准确的说法是GPT模型。目前openai提供的模型包括:
模型 | 描述 |
---|---|
GPT-4 | GPT-3.5的优化版本,理解能力和生成自然语言和代码的能力更好 |
GPT-3.5 | GPT-3的优化版本 |
DALL·E | 文生图AI模型 |
Whisper | 音频转文本AI模型 |
Embeddings | 文本转向量模型 |
Moderation | 敏感词检测模型,用以检查用户的输入是否合规 |
每个模型下面又分别有很多细分的模型,在文本和代码生成场景,官方推荐使用两个模型:gpt-3.5-turbo
or gpt-4
,本文使用目前成本更优的gpt-3.5-turbo
。相对应的, gpt-4
能理解更复杂的指令,也会尽可能不胡言乱语,但是 gpt-4
成本要高一些,推理速度要慢一些。
GPT模型的应用场景:
-
编写各种类型的文档,包括学术论文
-
生成代码
-
基于知识库进行问题回答
-
分析文本,包括阅读论文、解读代码等都能胜任
-
对话工具,比如客服
-
为软件提供自然语言接口
-
教学导师
-
翻译
-
游戏角色AI
openai的更多资源请参考:
https://platform.openai.com/docs
https://github.com/openai/openai-cookbook
MemFire Cloud介绍
本文主要使用了MemFire Cloud的BaaS服务提供的数据库自动生成API以及向量数据库能力,用以存储和检索embedding之后的向量数据。MemFire Cloud的BaaS服务还提供了其他一些方便开发者进行应用开发的功能:
-
完整的用户注册、登录、权限管理API,web前端和App开发人员可以直接调用,几行代码完成用户注册登录功能。
-
微信小程序、手机短信验证码、github、apple等第三方用户接入支持。
-
最流行的postgres关系数据库支持,自动生成增删查改API接口,支持向量化插件pgvector。
-
提供对象存储接口,方便应用开发者上传下载图片、文档等。
-
静态托管和自定义域名服务,可以让开发者不需要为部署前端代码专门购买云服务器。
-
云函数可以方便处理复杂和敏感的业务逻辑,也可以用来托管完整的api服务。
MemFire Cloud更多信息,请参考:https://memfiredb.com
GPT初体验
下面是openai官方的一个例子:
import os
import openai
openai.organization = "org-kjUiGhsu6S3CI2MUch25dMOF"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
参数必填项:
-
model:模型选择,这里用的是gpt-3.5-turbo
-
messages:信息,可以只包含一个问题,也可以包含更多上下文,以帮助AI更准确的回答问题。
AI开发的最主要的工作就是组装合适的messages,以达到