Este proyecto es una API REST de reemplazo directo para Vertex AI ( PaLM 2, Codey, Gemini ) que es compatible con las especificaciones de la API OpenAI.
Ejemplos:
Chatea con Gemini en la interfaz de usuario de Chatbot | Obtenga ayuda de Gemini en VSCode |
---|---|
Este proyecto está inspirado en la idea de LocalAI pero con el objetivo de hacer que Google Cloud Platform Vertex AI PaLM sea más accesible para todos.
Se instala un servicio Google Cloud Run que traduce las llamadas a la API de OpenAI a Vertex AI (PaLM 2, Codey, Gemini).
Servicios API de OpenAI compatibles:
Abierto AI | API | Apoyado |
---|---|---|
Listar modelos | /v1/models | ✅ |
Finalizaciones de chat | /v1/chat/completions | ✅ |
Finalizaciones (heredado) | /v1/completions | |
Incrustaciones | /v1/embeddings |
El software está desarrollado en Python y basado en FastAPI y LangChain.
Todo está diseñado para ser muy simple, por lo que puedes ajustar fácilmente el código fuente a tus necesidades individuales.
Se prepara un cuaderno Jupyter Vertex_AI_Chat.ipynb
con instrucciones paso a paso. Le ayudará a implementar el backend de API y el frontend de UI de Chatbot como servicio Google Cloud Run.
Requisitos:
Su usuario (el que se utiliza para la implementación) debe tener los permisos adecuados en el proyecto. Para una implementación rápida y sin complicaciones, se recomienda el rol de "Propietario".
Además, la cuenta de servicio informático predeterminada ( [PROJECT_NR][email protected]
) debe tener la función "Usuario de Rol Vertex AI" ( roles/aiplatform.user
).
Autenticar:
gcloud auth login
Establecer proyecto predeterminado:
gcloud config set project [PROJECT_ID]
Ejecute el siguiente script para crear una imagen de contenedor e implementar ese contenedor como una API pública (que permite llamadas no autenticadas) en Google Cloud Run:
bash deploy.sh
Nota: Puede cambiar la clave API de OpenAI falsa generada y la región de Google Cloud con variables de entorno:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
El software fue probado en GNU/Linux y macOS con Python 3.11 y 3.12.3 (3.12.4 actualmente no funciona). Si desea utilizar el software en Windows, debe configurar las variables de entorno con set
en lugar de export
.
También debes crear un entorno virtual con la versión de Python que deseas utilizar y activarlo antes de continuar.
También necesita la CLI de Google Cloud. La CLI de Google Cloud incluye la herramienta de línea de comandos gcloud
.
Inicie un entorno virtual Python e instale los requisitos:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
Autenticar:
gcloud auth application-default login
Establecer proyecto predeterminado:
gcloud auth application-default set-quota-project [PROJECT_ID]
Ejecutar con el modelo predeterminado:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Ejemplo para Windows:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
Ejecutar con el modelo Gemini gemini-pro
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
Ejecute con el modelo Codey 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
La aplicación ahora se ejecutará en su computadora local. Puede acceder a él abriendo un navegador web y navegando a la siguiente dirección:
http://localhost:8000/
Los formatos de solicitud y respuesta HTTP son consistentes con la API OpenAI.
Por ejemplo, para generar la finalización de un chat, puede enviar una solicitud POST al punto final /v1/chat/completions
con la instrucción como cuerpo de la solicitud:
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!"
}
]
} '
Respuesta:
{
"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
}
]
}
Descargar exportación para el cliente API de Bruno: bruno-export.json
La configuración del software se puede realizar con variables de entorno.
Existen las siguientes variables con valores predeterminados:
Variable | Por defecto | Descripción |
---|---|---|
DEPURAR | FALSO | Muestra mensajes de depuración que ayudan durante el desarrollo. |
GOOGLE_CLOUD_LOCATION | us-central1 | Región de Google Cloud Platform para llamadas API. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | Identificador de su proyecto. Si no se especifica, se utiliza el proyecto de autenticación. |
ANFITRIÓN | 0.0.0.0 | Vincula el socket a este host. |
MAX_OUTPUT_TOKENS | 512 | El límite de token determina la cantidad máxima de salida de texto de un mensaje. Puede ser anulado por el usuario final según lo exige la especificación de la API de OpenAI. |
MODELO_NOMBRE | bisonte-chat | Uno de los modelos básicos que están disponibles en Vertex AI. |
OPENAI_API_KEY | sk-[RANDOM_HEX] | Clave API OpenAI falsa autogenerada que se utiliza para la autenticación de la aplicación. |
PUERTO | 8000 | Vincule el socket a este puerto. |
TEMPERATURA | 0.2 | Temperatura de muestreo, controla el grado de aleatoriedad en la selección de tokens. Puede ser anulado por el usuario final según lo exige la especificación de la API de OpenAI. |
TOP_K | 40 | Cómo el modelo selecciona los tokens para la salida, se selecciona el siguiente token. |
TOP_P | 0,8 | Los tokens se seleccionan desde el más probable al menos hasta la suma de sus. Puede ser anulado por el usuario final según lo exige la especificación de la API de OpenAI. |
Si su aplicación utiliza bibliotecas cliente proporcionadas por OpenAI, solo necesita modificar la variable de entorno OPENAI_API_BASE
para que coincida con la URL de su punto final de Google Cloud Run:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
Al implementar la aplicación Chatbot UI, se deben configurar las siguientes variables de entorno:
Variable | Valor |
---|---|
OPENAI_API_KEY | Clave API generada durante la implementación |
OPENAI_API_HOST | URL de ejecución de Google Cloud |
Ejecute el siguiente script para crear una imagen de contenedor a partir del código fuente de GitHub e implementar ese contenedor como un sitio web público (que permite llamadas no autenticadas) en 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
Establezca las siguientes configuraciones de Chatbox:
Configuración | Valor |
---|---|
Proveedor de IA | API abierta de IA |
Clave API de OpenAI | Clave API generada durante la implementación |
Anfitrión API | URL de ejecución de Google Cloud |
La extensión VSCode-OpenAI es una herramienta potente y versátil diseñada para integrar funciones de OpenAI perfectamente en su editor de código.
Para activar la configuración, tienes dos opciones:
Seleccione openai.com
e ingrese la URL de Google Cloud Run con /v1
durante la configuración.
Al implementar la aplicación Discord Bot, se deben configurar las siguientes variables de entorno:
Variable | Valor |
---|---|
OPENAI_API_KEY | Clave API generada durante la implementación |
OPENAI_API_BASE | URL de ejecución de Google Cloud con /v1 |
Al implementar ChatGPT en la aplicación Slack, se deben configurar las siguientes variables de entorno:
Variable | Valor |
---|---|
OPENAI_API_KEY | Clave API generada durante la implementación |
OPENAI_API_BASE | URL de ejecución de Google Cloud con /v1 |
Al implementar la aplicación ChatGPT Telegram Bot, se deben configurar las siguientes variables de entorno:
Variable | Valor |
---|---|
OPENAI_API_KEY | Clave API generada durante la implementación |
OPENAI_API_BASE | URL de ejecución de Google Cloud con /v1 |
¿Tiene un parche que beneficiará a este proyecto? ¡Impresionante! Sigue estos pasos para que sea aceptado.
Todos los archivos de este repositorio están bajo la licencia Apache, versión 2.0, a menos que se indique lo contrario.