该项目是 Vertex AI( PaLM 2、Codey、Gemini )的直接替代 REST API,与 OpenAI API 规范兼容。
示例:
在聊天机器人 UI 中与 Gemini 聊天 | 在 VSCode 中获得 Gemini 的帮助 |
---|---|
该项目的灵感来自 LocalAI 的想法,但重点是让任何人都更容易使用 Google Cloud Platform Vertex AI PaLM。
安装了 Google Cloud Run 服务,将 OpenAI API 调用转换为 Vertex AI(PaLM 2、Codey、Gemini)。
支持的 OpenAI API 服务:
开放人工智能 | 应用程序编程接口 | 支持 |
---|---|---|
列出型号 | /v1/models | ✅ |
聊天完成 | /v1/chat/completions | ✅ |
竣工(遗留) | /v1/completions | |
嵌入 | /v1/embeddings |
该软件采用Python开发,基于FastAPI和LangChain。
一切都设计得非常简单,因此您可以轻松地根据您的个人需求调整源代码。
已准备好包含分步说明的 Jupyter 笔记本Vertex_AI_Chat.ipynb
。它将帮助您将 API 后端和 Chatbot UI 前端部署为 Google Cloud Run 服务。
要求:
您的用户(用于部署的用户)必须在项目中拥有适当的权限。为了实现快速、无忧的部署,建议使用“所有者”角色。
此外,默认计算服务帐户 ( [PROJECT_NR][email protected]
) 必须具有“角色 Vertex AI 用户”角色 ( roles/aiplatform.user
)。
认证:
gcloud auth login
设置默认项目:
gcloud config set project [PROJECT_ID]
运行以下脚本来创建容器映像,并将该容器部署为 Google Cloud Run 中的公共 API(允许未经身份验证的调用):
bash deploy.sh
注意:您可以使用环境变量更改生成的假OpenAI API 密钥和 Google Cloud 区域:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
该软件在 GNU/Linux 和 macOS 上使用 Python 3.11 和 3.12.3(3.12.4 目前不工作)进行了测试。如果要在Windows下使用该软件,必须使用set
而不是export
来设置环境变量。
您还应该使用要使用的 Python 版本创建一个虚拟环境,并在继续之前激活它。
您还需要 Google Cloud CLI。 Google Cloud CLI 包含gcloud
命令行工具。
启动Python虚拟环境并安装要求:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
认证:
gcloud auth application-default login
设置默认项目:
gcloud auth application-default set-quota-project [PROJECT_ID]
使用默认模型运行:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Windows 示例:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
使用 Gemini gemini-pro
模型运行:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
使用程小奔codechat-bison-32k
模型运行:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " codechat-bison-32k "
export MAX_OUTPUT_TOKENS= " 16000 "
uvicorn vertex:app --reload
该应用程序现在将在您的本地计算机上运行。您可以通过打开网络浏览器并导航到以下地址来访问它:
http://localhost:8000/
HTTP请求和响应格式与OpenAI API一致。
例如,要生成聊天完成,您可以将 POST 请求发送到/v1/chat/completions
端点,并将指令作为请求正文:
curl --location ' http://[ENDPOINT]/v1/chat/completions '
--header ' Content-Type: application/json '
--header ' Authorization: Bearer [API-KEY] '
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Say this is a test!"
}
]
} '
回复:
{
"id" : " cmpl-efccdeb3d2a6cfe144fdde11 " ,
"created" : 1691577522 ,
"object" : " chat.completion " ,
"model" : " gpt-3.5-turbo " ,
"usage" : {
"prompt_tokens" : 0 ,
"completion_tokens" : 0 ,
"total_tokens" : 0
},
"choices" : [
{
"message" : {
"role" : " assistant " ,
"content" : " Sure, this is a test. "
},
"finish_reason" : " stop " ,
"index" : 0
}
]
}
下载 Bruno API 客户端的导出: bruno-export.json
软件的配置可以通过环境变量来完成。
存在以下具有默认值的变量:
多变的 | 默认 | 描述 |
---|---|---|
调试 | 错误的 | 显示在开发期间有帮助的调试消息。 |
GOOGLE_CLOUD_LOCATION | 美国中央1 | 用于 API 调用的 Google Cloud Platform 区域。 |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | 您的项目的标识符。如果不指定,则使用认证的项目。 |
主持人 | 0.0.0.0 | 将套接字绑定到该主机。 |
最大输出令牌数 | 第512章 | 令牌限制决定一个提示中输出的最大文本量。最终用户可以根据 OpenAI API 规范的要求进行覆盖。 |
型号_名称 | 聊天野牛 | Vertex AI 中提供的基础模型之一。 |
OPENAI_API_KEY | sk-[RANDOM_HEX] | 自行生成的假OpenAI API 密钥,用于针对应用程序进行身份验证。 |
港口 | 8000 | 将套接字绑定到此端口。 |
温度 | 0.2 | 采样温度,控制token选择的随机程度。最终用户可以根据 OpenAI API 规范的要求进行覆盖。 |
TOP_K | 40 | 模型如何选择输出的标记,从中选择下一个标记。 |
TOP_P | 0.8 | 从最可能到最不可能选择令牌,直到它们的总和。最终用户可以根据 OpenAI API 规范的要求进行覆盖。 |
如果您的应用程序使用 OpenAI 提供的客户端库,您只需修改OPENAI_API_BASE
环境变量以匹配您的 Google Cloud Run 端点 URL:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
部署 Chatbot UI 应用程序时,必须设置以下环境变量:
多变的 | 价值 |
---|---|
OPENAI_API_KEY | 部署期间生成的 API 密钥 |
OPENAI_API_HOST | Google 云运行 URL |
运行以下脚本以从 GitHub 源代码创建容器映像,并将该容器部署为 Google Cloud Run 中的公共网站(允许未经身份验证的调用):
export OPENAI_API_KEY= " sk-XYZ "
export OPENAI_API_HOST= " https://openai-api-vertex-XYZ.a.run.app "
bash chatbot-ui.sh
设置以下聊天框设置:
环境 | 价值 |
---|---|
人工智能提供商 | 开放人工智能API |
OpenAI API 密钥 | 部署期间生成的 API 密钥 |
API主机 | Google 云运行 URL |
VSCode-OpenAI 扩展是一款功能强大且多功能的工具,旨在将 OpenAI 功能无缝集成到代码编辑器中。
要激活设置,您有两种选择:
选择openai.com
并在设置过程中输入包含/v1
的 Google Cloud Run URL。
部署 Discord Bot 应用程序时,必须设置以下环境变量:
多变的 | 价值 |
---|---|
OPENAI_API_KEY | 部署期间生成的 API 密钥 |
OPENAI_API_BASE | 带有/v1 Google Cloud Run URL |
在 Slack 应用程序中部署 ChatGPT 时,必须设置以下环境变量:
多变的 | 价值 |
---|---|
OPENAI_API_KEY | 部署期间生成的 API 密钥 |
OPENAI_API_BASE | 带有/v1 Google Cloud Run URL |
部署 ChatGPT Telegram Bot 应用程序时,必须设置以下环境变量:
多变的 | 价值 |
---|---|
OPENAI_API_KEY | 部署期间生成的 API 密钥 |
OPENAI_API_BASE | 带有/v1 Google Cloud Run URL |
有一个对这个项目有利的补丁吗?惊人的!请按照以下步骤接受它。
除非另有说明,此存储库中的所有文件均遵循 Apache 许可证版本 2.0。