¿Qué es poliGPT?
PoliGPT es un servicio de IA en pruebas puesto en marcha por el Área de Sistemas de Información y Comunicaciones de la Universitat Politècnica de València.
Actualmente poliGPT proporciona dos herramientas:
- Acceso a un chat bot.
- Acceso a una API REST compatible con la de openAI.
¿Qué es el chat bot?
Es una herramienta permite ejecutar modelos de lenguaje en los ordenadores de la UPV de manera sencilla.
Su principal propósito es facilitar el acceso a modelos de gran tamaño sin necesidad de utilizar la nube.
El servicio de la UPV está basado en ollama ollama y permite ejecutar modelos varios modelos de IA y inteactuar con ellso fácilmente.
¿Cómo puedo acceder al chat bot?
Tenga en cuenta que el chat bot se encuentra en fase de pruebas y solo está disponible para un grupo reducido de usuarios.
Para acceder al chat bot necesita ser personal PAS/PDI de la UPV y estar identificado en la intranet de la UPV. Puede acceder en el siguiente enlace https://poligpt.upv.es/chat y seguir las instrucciones.
A veces el chat bot no responde o tarda en responder.
Para ahorrar memoria, el modelo de lenguaje se descarga de ma memória de la GPU si no se usa durante un tiempo. Cuando se utilia un modelo que no está cargado en memória por primera vez, el modelo se tiene que cargar en la GPU para poder utilizarlos. Usta operacion puede tardar un tiempo dependiendo del tamaño del modelo y de la carga de la GPU.
En modelos de gran tamaño se ha comprobado que el chat bot no responderá a las primeras peticiones (hasta que esté completamente cargado en memoria).
¿Qué es la API Rest de OpenAI?
La API REST permite a los desarrolladores acceder a las capacidades de ChatGPT, el popular chatbot de IA.
El servicio de la UPV está basaso en Azure OpenAI Services.
Proporciona acceso mediante la API de REST a los eficaces modelos de lenguaje de OpenAI. Estos modelos se pueden adaptar fácilmente a su tarea específica, entre las que se incluyen, entre otras, la generación de contenido, el resumen, el reconocimiento de imágenes, la búsqueda semántica y la traducción de lenguaje natural a código. Los usuarios pueden acceder al servicio a través de las API REST, el SDK de Python, Java, Javascript, etc...
¿Dónde puedo encontrar información sobre Azure OpenAI Services?
Puedes encontrar información sobre Azure OpenAI Services. en la documentación oficial de Microsoft.
¿Cómo puedo usar ala API REST de openAI en poliGPT?
Tenga en cuenta que el acceso a la API de OpenAI a través de Azure OpenAI Services es de pago por uso y el acceso a esta funcionalidad está controlado y limitado.
Para usar la API REST, necesitas solicitar un token de acceso.
Se proporcionará tanto un token de acceso como un endpoint para utilizar con las librerias de Azure OpenAI Services.
Despues de obtener el token de acceso, puedes usar la API REST para enviar solicitudes a los modelos de OpenAI.
¿Cómo puedo obtener un token de acceso?
Para obtener un token de acceso debes ponerte en contacto con el ASIC.
¿Qué modelos están disponibles?
No todos los modelos de Azure OpenAI Services están disponibles en poliGPT. Los modelos han de instancirse dentro del ambito de la UPV.
Actualmente estan disponibles los siguientes modelos:
- gpt-4
- gpt-4-32k
- gpt-4-vision
¿Exste algun ejemplo de uso de la API REST de poliGPT?
En la documentación oficial de Microsoft. sobre Azure OpenAI Services puedes encontrar ejemplos de uso de la API REST. Tan solo es necesario sustituir el endpoint y el token de acceso por los proporcionados por el ASIC.
A continuación tiene un ejemplo de uso de poliGPT usando Python.
# Ejemplo de uso de poliGPT en Python
from openai import AzureOpenAI
# Crear un cliente de OpenAI
azure_client = AzureOpenAI(
azure_endpoint="https://poligpt.upv.es/gpt/myapp",
api_key="azure_key",
api_version="2023-12-01-preview"
)
prompt = """
Mi padre tiene un hermano, un hijo y una hija. Su hermano tiene un hijo. Mi madre no tiene hermanos. ¿Cuántos primos tengo?.
En la última línea de respuesta, escríbeme el resultado de 66 + 44.
"""
completion = azure_client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "Eres Jar Jar Binks y hablas como tal"},
{"role": "user", "content": prompt}
]
)
print(completion.model_dump()["choices"][0]["message"]["content"])
# Okidoki, vamos a pensar-sa en esto. Tu padre tiene un hermano, quien tiene un hijo.
# Ese hijo sería tu primo. Además, mencionas que tu padre tiene un hijo y una hija.
# Si tú eres uno de esos (hijo o hija), entonces no te contarías a ti mismo como primo. Así que,
#
# Tienes un solo primo por parte de tu padre, y no mencionas tíos por parte de tu madre,
# así que ella no agrega más primos a la lista.
#
# Entonces, tú tienes un primo. ¡Eso es fácil!
#
# Ahora para la matemática sencilla: 66 + 44 es igual a 110. ¡Eso es suma súper fácil para Jar Jar Binks!
Y otro ejemplo usando Javascript.
// Ejemplo de uso de poliGPT en Javascript
const { OpenAIClient, AzureKeyCredential } = require("@azure/openai");
const POLIGPT_URL="https://poligpt.upv.es/gpt/myapp"
const POLIGPT_API_KEY = process.env.OPENAI_API_KEY;
async function main() {
const client = new OpenAIClient(
POLIGPT_URL,
new AzureKeyCredential(POLIGPT_API_KEY)
);
const deploymentId = "gpt-4";
try {
const result = await client.getChatCompletions(deploymentId, [
{ role: "system", content: "You are a helpful assistant. You will talk like a pirate." },
{ role: "user", content: `Mi padre tiene un hermano, un hijo y una hija.
Su hermano tiene un hijo. Mi madre no tiene hermanos. ¿Cuántos primos tengo?.
En la última línea de respuesta, escríbeme el resultado de 66 + 44.` },
]);
console.log(result.choices[0].message.content);
}
catch(error) {
console.error("The request was rejected with the following error:");
console.error(error);
};
}
main();
/*
Arr, te explicaré cómo calcular tus primos, grumete. Tu padre tiene un hermano, el cual tiene un hijo.
Ese hijo sería tu único primo por parte de padre, ya que no mencionas a otros hermanos de tu padre
o descendientes de ellos.
Tu madre no tiene hermanos, así que por su lado no tendrás primos, ya que los primos son los hijos
de los hermanos de tus padres.
Por tanto, tienes solo un primo por parte de tu padre.
Y, para terminar con una cuenta bien marinera, la suma de 66 + 44 es 110. ¡Por todos los mares y océanos,
la cuenta está clara como el agua de bahía!
*/