大家好,机器人插件授权网站源码分享相信很多的网友都不是很明白,包括机器人插件官网也是一样,不过没有关系,接下来就来为大家分享关于机器人插件授权网站源码分享和机器人插件官网的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
自从OpenAI在2023年3月发布了ChatGPT的官方API[1]和插件系统[2]以来,许多开发者和创业者都兴致勃勃地想办法将其整合到自己的业务中。
本文讨论的serverless函数相当于ChatGPT插件[3]。它们由Web事件触发,可以检索实时信息以输入ChatGPT,使用动态提示词问询ChatGPT,然后通过外向的Web服务调用执行实际操作。
(本图由midjourney生成)
但是,想要集成ChatGPT,仍然困难重重:
OpenAI为ChatGPT提供了一个简单的无状态API[4]。开发者需要在应用程序管理的缓存或数据库中跟踪每个对话的历史和上下文。开发者还需要管理和保护API密钥。这里有很多与应用程序业务逻辑无关的boilerplate代码。ChatGPTAPI应用程序的“自然”用户界面是thread聊天。但在传统的网络或应用程序框架中创建“聊天界面”是非常困难的。实际上,最常用的聊天界面已经存在于诸如Slack、Discord乃至论坛(例如GitHubDiscussions)这样的消息应用中。我们需要一种简单的方法将ChatGPT的API响应连接到现有的消息服务中。ChatGPT插件编程起来比较复杂,在很重的虚拟机中部署成本高昂。
本文将展示如何用serverless函数创建一个完整的ChatGPT应用程序。它是个GitHub机器人。与ChatGPT插件一样,该机器人使ChatGPT能够实时读取和写入互联网。
有了这个机器人,GitHub用户就能在GitHubIssues中与ChatGPT进行对话。可以通过提新的issue[5]或在已有的issue的下面发表评论[6],来和ChatGPT聊天。换句话说,这个项目使用GitHubIssues的thread消息UI作为它聊天的UI。
图1.用ChatGPT学习Rust编程。
查看https://github.com/second-state/chat-with-chatgpt/issues/31
该机器人是用Rust编写的serverless函数。只需fork该example模版,将你的fork部署到flows.network[7]上,并配置你的GitHubrepo和OpenAI密钥。只需5分钟,就能拥有一个功能齐全的GitHub机器人。无需设置Web服务器、为GitHubAPI设置Webhook、或设置缓存/数据库服务器。
Fork模板Repo
首先,从GitHub[8]fork该模版repo[9]。
地址:https://github.com/flows-network/chatgpt-github-app
src/lib.rs[10]文件包含bot应用(也称为flow函数)。run()函数在启动时就被调用。它从GitHubrepoowner/repo[11]监听issue_comment和issues事件。这些事件会出现在repo中创建新issue或新issue评论时。
[tokio::main(flavor=&34;)]\npubasyncfnrun(){\n//Setupvariablesfor\n//login:GitHubaccountforthebot(typicallyjustyourpersonalaccount)\n//owner:GitHuborg(oruser)toinstallthebot\n//repo:GitHubrepotoinstallthebot\n//openai_key_name:NameforyourOpenAIAPIkey\n//Allthevaluescanbesetinthesourcecodeorasenvvars\n\nlisten_to_event(&login,&owner,&repo,vec![&34;,&34;],|payload|{\nhandler(&login,&owner,&repo,&openai_key_name,payload)\n})\n.await;\n}\n\n
handler()函数处理listen_to_event()接收到的事件。如果事件是issue中的新评论,则机器人会调用OpenAI的ChatGPTAPI将评论文本添加到由issue.number标识的现有对话中。它收到来自ChatGPT的响应,并添加到issue的评论。
此处的flow函数自动并透明地管理本地存储中与ChatGPTAPI的对话历史记录。OpenAIAPI密钥也存储在本地存储中,因而可以通过openai_key_name中的字符串名称来识别密钥,而不必将密钥放在源代码中。
EventPayload::IssueCommentEvent(e)=>{\nife.comment.user.r34;Bot&34;issue34;,e.issue.number),\n&b,\n&ChatOptions::default(),\n){\nifletErr(e)=issues.create_comment(e.issue.number,r.choice).await{\nwrite_error_log!(e.to_string());\n}\n}\n}\n}\n}\n\n
如果事件是一个新的issue,flow函数创建一个新的对话,由issue.number识别,并向ChatGPT请求响应。
EventPayload::IssuesEvent(e)=>{\nife.action==IssuesEventAction::Closed{\nreturn;\n}\nlettitle=e.issue.title;\nletbody=e.issue.body.unwrap_or(&34;.to_string());\nletq=title+&34;+&body;\nifletSome(r)=chat_completion(\nopenai_key_name,\n&format!(&{}”,e.issue.number),\n&q,\n&ChatOptions::default(),\n){\nifletErr(e)=issues.create_comment(e.issue.number,r.choice).await{\nwrite_error_log!(e.to_string());\n}\n}\n}\n
如何部署ServerlessFlow函数
可以看到,flow函数代码调用SDKAPI来执行复杂的操作。例如
listen_to_event()函数通过GitHubAPI注册一个webhookURL,从而handler()函数会在GitHub发生特定事件时被调用。Thechat_completion()函数使用命名的API密钥和指定对话的历史(上下文)调用ChatGPTAPI。API密钥和对话历史记录存储在Redis缓存中。
Webhook服务器和Redis缓存都是SDK依赖的外部服务。这意味着flow函数必须在提供此类外部服务的托管host环境中运行。Flows.network[12]是flow函数SDK的PaaS(平台即服务)host。
为了在flows.network上部署flow函数,只需将其源代码导入PaaS。
首先,从你的GitHub账户登录flows.network。导入你刚刚fork的包含flow函数源代码的GitHubrepo,并选择“Advanced”。
请注意,这里不是选要部署机器人的GitHubrepo;而是选择你fork的flow函数源代码的repochatgpt-github-app。
点击Advanced来查看更多设置。
设置环境变量,将flow函数指向OpenAIAPI密钥名称(openai_name_key)和GitHubrepo(login,owner和repo)。
此处的GitHubowner和repo变量指向你要部署机器人的GitHubrepo,而不是flow函数源代码的repo。login变量是机器人的GitHub账户。它通常只是您的个人GitHub账户。login账户必须有权访问上述owner/repo。
图3.为要部署机器人的GitHubrepo设置环境变量,以及OpenAIAPI密钥名称。
Flows.network将fetch源代码并使用标准的cargo工具链将Rust源代码构建为Wasm字节码。然后在WasmEdgeRuntime[13]中运行Wasmflow函数。
如何将Flow函数连接到GitHub和OpenAI
虽然flow函数需要连接到OpenAI和GitHubAPI,但源代码没有写死的API密钥、访问令牌或OAUTH逻辑。flow函数SDK使开发者可以轻松、安全地与外部SaaSAPI服务进行交互。
Flows.network发现flow函数要求连接到OpenAI和GitHubAPI。flows平台为开发者提供了UI工作流,让开发者能够:
登录GitHub,授权访问事件,并将flow函数注册为用于接收这些事件的webhook。将OpenAIAPI密钥与名称openai_key_name相关联。
图4.flow函数所需的外部服务
外部SaaSAPI成功连接并得到授权后,flow函数dashboard上的紫色“Connected”变成灰色。flow函数现在将接收listen_to_event()的事件。它还将获得对Redis的透明访问以获取指定的OpenAIAPI密钥和缓存的对话上下文,从而支持chat_completion()SDK函数。
下一步
flows.network支持连接各种SaaS的不同机器人,GitHub机器人只是其中之一。通过将flow函数连接到Slack频道,就可以将ChatGPT加到你的群聊天。下面是一个基于Slack的ChatGPT机器人的示例。你可以参加代码Repo里的readme文件,自己部署这个函数。
代码链接:https://github.com/flows-network/collaborative-chat
图5.SlackChatGPT机器人
另一个例子是让ChatGPT在Slack频道中回答法律问题。flow函数里面可以规定好prompt——说明ChatGPT需要充当法律顾问回答法律咨询。你可以参加代码Repo里的readme文件,自己部署这个函数。
代码链接:https://github.com/flows-network/robo-lawyer
图6.基于ChatGPT的Slack律师机器人
除了GitHub和Slack,还有许多SaaS产品可以通过其API集成到flows.network中。
最后,除了Rust,JavaScript支持也在路上了。
参考资料
[1]
API:https://openai.com/blog/introducing-chatgpt-and-whisper-apis
[2]
插件系统:https://openai.com/blog/chatgpt-plugins
[3]
ChatGPT插件:https://openai.com/blog/chatgpt-plugins
[4]
API:https://platform.openai.com/docs/guides/chat
[5]
提新的issue:https://github.com/second-state/chat-with-chatgpt/issues/new
[6]
已有的issue的下面发表评论:https://github.com/second-state/chat-with-chatgpt/issues
[7]
flows.network:https://flows.network/
[8]
GitHub:https://github.com/flows-network/chatgpt-github-app
[9]
repo:https://github.com/flows-network/chatgpt-github-app
[10]
src/lib.rs:https://github.com/flows-network/chatgpt-github-app/blob/main/src/lib.rs
[11]
owner/repo:https://github.com/second-state/chat-with-chatgpt
[12]
Flows.network:https://flows.network/
[13]
WasmEdgeRuntime:https://github.com/WasmEdge/WasmEdge
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
