在大量代码中构建和部署无服务器 OpenAI 应用程序
?想要构建和部署交互式 AI 应用程序? ??? ?????? 就在 内? ???? ?? ????
在本教程中,您将使用 LlamaIndex 创建问答引擎,使用 FastAPI 通过 HTTP 提供服务,并使用 DBOS 将其无服务器部署到云。
它基于 LlamaIndex 的 5 行启动器,只需 4 行即可使其支持云。简单、快速且可扩展!
准备
首先,为您的应用创建一个文件夹并激活虚拟环境。
python3 -m venv ai-app/.venv cd ai-app source .venv/bin/activate touch main.py
然后,安装依赖项并初始化 DBOS 配置文件。
pip install dbos llama-index dbos init --config
接下来,要运行这个应用程序,您需要一个 OpenAI 开发者帐户。在此处获取 API 密钥。将 API 密钥设置为环境变量。
export OPENAI_API_KEY=XXXXX
在 dbos-config.yaml 中声明环境变量:
env: OPENAI_API_KEY: ${OPENAI_API_KEY}
最后,让我们下载一些数据。这个应用程序使用保罗·格雷厄姆的“我的工作内容”中的文本。您可以从此链接下载文本并将其保存在应用程序文件夹的 data/paul_graham_essay.txt 下。
现在,您的应用程序文件夹结构应如下所示:
ai-app/ ├── dbos-config.yaml ├── main.py └── data/ └── paul_graham_essay.txt
加载数据并构建问答引擎
现在,让我们使用 LlamaIndex 用 5 行代码编写一个简单的 AI 应用程序。
将以下代码添加到您的 main.py 中:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader documents = SimpleDirectoryReader("data").load_data() index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() response = query_engine.query("What did the author do growing up?") print(response)
该脚本加载数据并在 data/ 文件夹下的文档上构建索引,并通过查询索引生成答案。您可以运行此脚本,它应该会给您一个响应,例如:
$ python3 main.py The author worked on writing short stories and programming...
HTTP 服务
现在,让我们添加一个 FastAPI 端点以通过 HTTP 提供响应。修改你的 main.py 如下:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader from fastapi import FastAPI app = FastAPI() documents = SimpleDirectoryReader("data").load_data() index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() @app.get("/") def get_answer(): response = query_engine.query("What did the author do growing up?") return str(response)
现在您可以使用 fastapi run main.py 启动您的应用程序。要查看它是否正常工作,请访问以下 URL:http://localhost:8000
每次刷新浏览器窗口时,结果可能会略有不同!
托管在 DBOS 云上
要将您的应用部署到 DBOS Cloud,您只需在 main.py 中添加两行:
- 从 dbos 导入 DBOS
- DBOS(fastapi=应用程序)
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader from fastapi import FastAPI from dbos import DBOS app = FastAPI() DBOS(fastapi=app) documents = SimpleDirectoryReader("data").load_data() index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() @app.get("/") def get_answer(): response = query_engine.query("What did the author do growing up?") return str(response)
现在,如果尚未安装 DBOS Cloud CLI(需要 Node.js):
npm i -g @dbos-inc/dbos-cloud
然后将依赖项冻结到requirements.txt并部署到DBOS Cloud:
pip freeze > requirements.txt dbos-cloud app deploy
不到一分钟,它就会打印 Access your application at
要查看您的应用程序是否正常运行,请访问
恭喜您,您已成功将您的第一个 AI 应用程序部署到 DBOS Cloud!您可以在云控制台中看到您部署的应用。
下一步
这只是您 DBOS 之旅的开始。接下来,看看 DBOS 如何使您的 AI 应用程序更具可扩展性和弹性:
- 使用持久执行来编写防崩溃工作流程。
- 使用队列优雅地管理 AI/LLM API 速率限制。
- 想要构建更复杂的应用程序吗?查看人工智能驱动的 Slackbot。
尝试一下并告诉我你的想法?
以上是在大量代码中构建和部署无服务器 OpenAI 应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

Python3.6环境下加载pickle文件报错:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬虫时管道文件无法写入的原因探讨在学习和使用Scapy爬虫进行数据持久化存储时,可能会遇到管道文�...
