首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何制作一个速度惊人的AI应用(Supabase、LLAMA 3 和 Groq)

到现在为止,你可能已经见过那些速度惊人的AI应用演示,这些应用快到你甚至不需要流式传输响应。开发一个全栈AI应用可能非常复杂,许多创业公司花费了数百万美元和数百名工程师的时间。幸运的是,由于我们有许多出色的工具,不仅可以自己制作,而且可以在一个周末内完成。

你将使用如下工具:

Supabase: 免费开始使用 https://supabase.com/

一个前端的JavaScript框架(选择你喜欢的,有很多) https://radixweb.com/blog/best-javascript-frameworks-for-web-development

现在你知道了要使用的工具,是时候开始了。

构建AI应用的第一步

喝点水,出去走走。真的,你在电脑前呆太久了,这不健康。请出去走走。

设置Supabase项目

现在你已经从外面回来(或者更可能只是忽略了那部分),你准备好开始设置一个Supabase项目。托管版本在supabase.com上点击几下即可完成。自托管有点复杂,但如果你想走那条路,请阅读此指南。

获取Groq

在Groq Cloud上注册,你可能需要等待API访问权限,但等你读到这里时情况可能已改变。

调用Supabase

假设你已经用npm设置好了一些前端项目,接下来你需要用以下命令安装Supabase:

npm i @supabase/supabase-js

然后你可以用以下代码创建一个Supabase客户端:

import { createClient } from '@supabase/supabase-js'const supabaseUrl = 'YOUR_URL'const supabaseKey = 'YOUR_KEY'const supabase = createClient(supabaseUrl, supabaseKey)

现在,你已经可以在你的项目中访问Supabase。

从边缘调用Llama 3

我们将在Supabase中使用一个边缘函数来调用Groq API上的Llama 3。使用边缘函数可以非常简单地为Supabase项目编写自定义代码。

根据你的操作系统,安装Supabase CLI的方法会有所不同,请查阅此指南了解详细信息,然后回来。

在你的项目文件夹中运行supabase init来初始化Supabase,然后运行supabase functions new groq-api,这将创建一个名为'groq-api'的函数。

打开index.ts文件,添加如下代码:

这非常重要,因为我们希望从浏览器调用我们的函数。因此,当浏览器发送OPTIONS请求时,函数会响应一个ok。

现在在if语句下面添加这段代码:

const GROQ_API_KEY = 'GROQ_API_KEY'

const data = fetch('https://api.groq.com/openai/v1/chat/completions', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${GROQ_API_KEY}`},body: JSON.stringify({"messages": [{"role": "user","content": "Hello Llama!"}],"model": "llama3-8b-8192","temperature": 1,"max_tokens": 1024,"top_p": 1,"stream": false,"stop": null})})

这将调用Groq API,并传递用户信息,内容为“Hello Llama!”

现在让用户发送他们自己的消息,添加这段代码到serve函数的开头:

const { message } = await req.json()

然后返回fetch操作的响应如下:

const completion = response.json()['data']['content']

return new Response(JSON.stringify({ "completion": completion}), {headers: { ...corsHeaders, 'Content-Type': 'application/json' },status: 200,})

你的代码现在应该是这样的:

import { serve } from 'https://deno.land/std@0.177.0/http/server.ts'

export const corsHeaders = {'Access-Control-Allow-Origin': '*','Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',}

serve(async (req) => {

const { message } = await req.json()

if (req.method === 'OPTIONS') {return new Response('ok', { headers: corsHeaders })}

const GROQ_API_KEY = 'GROQ_API_KEY'

const response = await fetch('https://api.groq.com/openai/v1/chat/completions', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': `Bearer ${GROQ_API_KEY}`},body: JSON.stringify({"messages": [{"role": "user","content": "Hello Llama!"}],"model": "llama3-8b-8192","temperature": 1,"max_tokens": 1024,"top_p": 1,"stream": true,"stop": null})})

const completion = response.json()['data']['content']

return new Response(JSON.stringify({ "completion": completion}), {headers: { ...corsHeaders, 'Content-Type': 'application/json' },status: 200,})})

通过在你的项目文件夹中运行supabase functions deploy groq-api来部署你的函数。

现在,你只需要在前端项目中使用你的函数。导入Supabase并调用它:

import { supabase } from "/path/to/supabase"

const { data, error } = await supabase.functions.invoke('groq-api', {body: { message: 'The message value from the user' }})

全部完成了!依赖你的框架,你将以不同的方式处理变量和状态,但上面的部分是框架无关的。

需要注意的几件事情:

我们没有实现聊天记录,你可以在Supabase数据库中实现,根据用户动态拉取

当可能时,使用环境变量而不是硬编码API密钥

目前来说,你已经有了一个很好的开始。现在是时候扩展到数百万用户了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OYb-cgS7-utSAR2TQra8XGcw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券