生成OpenAI GPT3补全文本
使用OpenAI和Supabase边缘函数生成GPT文本补全
OpenAI 提供了一个 completions API,允许您在自己的应用中使用他们的生成式 GPT 模型。
OpenAI 的 API 设计为在服务端使用。Supabase 提供的边缘函数可以轻松实现与 OpenAI 等第三方 API 的交互。
设置 Supabase 项目
如果尚未安装,请先安装 Supabase CLI 并初始化项目:
1supabase init
创建边缘函数
通过以下命令创建一个名为 openai
的边缘函数脚手架:
1supabase functions new openai
此时会在 ./supabase/functions/openai/index.ts
路径下生成一个新的边缘函数。
我们将设计该函数接收用户查询(通过 POST 请求)并将其转发至 OpenAI 的 API。
1234567891011121314151617181920212223import OpenAI from 'https://deno.land/x/openai@v4.24.0/mod.ts'Deno.serve(async (req) => { const { query } = await req.json() const apiKey = Deno.env.get('OPENAI_API_KEY') const openai = new OpenAI({ apiKey: apiKey, }) // 文档参考:https://github.com/openai/openai-node const chatCompletion = await openai.chat.completions.create({ messages: [{ role: 'user', content: query }], // 模型选择参考:https://platform.openai.com/docs/models model: 'gpt-3.5-turbo', stream: false, }) const reply = chatCompletion.choices[0].message.content return new Response(reply, { headers: { 'Content-Type': 'text/plain' }, })})
注意我们将 stream
设为 false
,这会等待完整响应完成后再返回。如果您希望将 GPT 的响应逐字流式传输回客户端,请将 stream
设为 true
。
创建OpenAI密钥
您可能已经注意到我们在向OpenAI发送请求时,在Authorization头部传递了OPENAI_API_KEY
。要生成这个密钥,请访问 https://platform.openai.com/account/api-keys 并创建一个新的密钥。
获取密钥后,将其复制到./supabase
文件夹中名为.env.local
的新文件中:
1OPENAI_API_KEY=your-key-here
本地运行
通过以下命令在本地运行边缘函数:
1supabase functions serve --env-file ./supabase/.env.local --no-verify-jwt
注意我们是如何传入.env.local
文件的。
使用cURL或Postman向http://localhost:54321/functions/v1/openai发送POST请求:
123curl -i --location --request POST http://localhost:54321/functions/v1/openai \ --header 'Content-Type: application/json' \ --data '{"query":"What is Supabase?"}'
您应该会看到从OpenAI返回的GPT响应!
部署
通过以下命令将您的函数部署到云端:
12supabase functions deploy --no-verify-jwt openaisupabase secrets set --env-file ./supabase/.env.local
深入探索
如果您有兴趣了解如何使用这个功能构建自己的ChatGPT,请阅读博客文章并查看视频: