一、前语
相信现在大家现在对 ChatGPT
应该多多少少有所触摸。
ChatGPT
是由 OpenAI
开发的一个人工智能模型,它运用了机器学习技能,尤其是自然言语处理( NLP
)技能,以理解和生成人类言语。这种模型根据大规模的文本数据进行训练,能够生成连接且自然的文本,从而能够与人类进行自然言语对话。
想必大家也多少体会过 ChatGPT
。但本文的话,更多是以开发者的视角,经过 OpenAI
提供的 API
,从而去建立自己的 ChatBot
,最终能够完成如下图的微信大众号、飞书敞开途径等第三方 IM 的接入。
在此之前,建立 ChatBot 的所需求的东西
- OpenAI 的 APIKey。
- 对前后端接口有了解。
- 对第三方 IM 途径接入开发有所了解/自己有敞开的谈天服务。
那么下面,咱们就进入正题吧,咱们从大体思路开端。
二、大体思路
在介绍大体思路之前,咱们先思考咱们构建 ChatBot 的目的是啥️。
本质上:便是经过社交 APP,经过 AI 的功能来加工回复用户的输入信息。
确定好方针之后,咱们如何来完成呢?咱们能够看看如何改造咱们社交软件回复的流程。
那首先,咱们先来看看以往咱们谈天软件是如何运行的。
以往的流程
以往常见的流程其实会比较简略。如下图,本质上,这里有三个角色
- User: 建议会话的用户,作为输入端。
- IM APP: 作为音讯通讯,信息分发的途径。
- User / Chat Server: 回复会话的用户或许自己的谈天服务,作为输出端。
从上方的图,咱们能够看出来对用户的输入,往往是经过自己人工或许自己的谈天服务来进行回复用户的输入信息的,整个过程 IM APP 更多是最为一个途径。
那么其实咱们只需求对呼应端即(User / Chat Server)进行改造就行了。
ChatBot 的流程
ChatBot 的流程其实很简略,将上方的呼应端,换成 ChatBot Server,并且接入 OpenAI 的API 就行了。
- User: 建议会话的用户,作为输入端。
- IM APP: 作为音讯通讯,信息分发的途径。
- ChatBot:处理用户输入的信息,调用 OpenAI 接口,取得呼应信息,并加工信息作为回复。
注意:这里还有个 process message 的节点,本质上是对输入输出进行处理。
- 输入处理:首要是为了生成对应的 Prompt。
- 输出处理:首要是对取得的 OpenAI 的呼应,进行格式化处理。
三、详细完成流程
有了上方的思路,其实咱们首要要完成的两个点便是 调用 OpenAI 接口
+ 第三方 IM 途径集成
。
注:由于第三方的接口涉及的文档会比较多,且各个敞开途径应该都有对应的文档,所以,这里不会细讲第三方 IM 途径集成。
3.1 调用 GPT 接口
参阅文档:
- platform.openai.com/docs/librar…
- platform.openai.com/docs/guides…
现在 openAI
也有自己的 npm 包,现在接入的成本其实相对比较低。
安装依靠
npm install openai
参数配置
Notes:
- APIKey 问题:登录 api_key,免费额度运用完后,或许得自己绑卡了。
- 网络问题:这里或许会存在网络链接不上的状况,能够自己去做一层署理转发,处理网络问题。可参阅 OpenAI 署理
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
basePath: process.env.OPENAI_BASE_PATH || 'https://api.openai.com/v1', // 如果你做了署理转发的话
});
const openai = new OpenAIApi(configuration);
调用接口
const chat_completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: "Hello world" }],
});
最终代码
import { Configuration, OpenAIApi } from "openai";
export class ChatGPT {
private openai: OpenAIApi;
// This constructor will be called when we create a new instance of the ChatGPT class
constructor() {
// Create a new instance of the OpenAI API
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY || '',
basePath: process.env.OPENAI_BASE_PATH || 'https://api.openai.com/v1',
});
const openai = new OpenAIApi(configuration);
this.openai = openai;
}
// This function will be called from the controller
async chat(prompt: string): Promise<string> {
const llmResponse = await this.openai.createChatCompletion({
model: process.env.OPENAI_CHATBOT_MODEL_ID || 'gpt-3.5-turbo',
messages: [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt }
]
});
return llmResponse.data.choices[0].message.content;
}
}
3.3 途径集成
咱们已经有了 API 的服务了,那么这个时候咱们只需求将接口接入对应的途径即可。
参阅文档:
- 微信大众号:developers.weixin.qq.com/doc/offiacc…
- 飞书敞开途径:open.feishu.cn/document/ho…
本质上是运用了 OpenAI 敞开的 OpenAPI 接口 以及 各个敞开途径的 API 进行集成,一个简略的 chatBot 实际上就完成了。
- OpenAI:提供文字答复服务。例如咱们运用 chatApi,就能够能简略地做一个文字的谈天服务。
- 飞书、微信途径集成:各 APP 端多少都会敞开对应的接口给到开发者,用于接收用户的信息,并对用户的信息进行回复。
当然,简略的 ChatBot 你能够直接把用户的提示词和模型的呼应直接进行回来,不做任何加工处理。
四、补充拓宽
上方简略写了如何建立一个 ChatBot
,但你能够借助 OpenAI
提供的能力去,测验新的玩法,比方特定的提示词加工、多模态的交互。一起,你也能够结合 LangChain 做一些自己的运用。
- 提示词加工:你能够指定特别的提示词,从而去做一些扩展运用。比方 GPT + GitHub 完成自动 Code Review –
-
多模态的交互:现在 OPENAI 敞开的 API 接口其实支撑不同模态的交互,比方图片,语音。
- 图片:文生图,图生图。
- 语音:语音转语音(另一国言语),语音转文字。
-
LangChain: LangChain 是一个用于开发大型言语模型运用的软件结构。它的方针是简化运用大型言语模型(LLMs)创建运用的过程。
五、总结
本文简略介绍了如何建立根据 OpenAI 提供的 API 建立 ChatBOT,但更多是期望咱们能够从开发者的视角去运用大言语模型,说不定会有新的主意呈现呢。有兴趣和主意的同学,能够在谈论区留言一起讨论哈。
参阅资料:
- ChatGPT
- platform-openai
- 微信大众开发途径
- 飞书敞开途径
如果本文对你有一点点帮助或启发,期望能够点个赞哈 / 下方谈论区谈论 / 互重视 Github、大众号 学习交流,支撑是创作的动力~。
- 大众号:华铧同学
- Github:github.com/hua-bang