Añadir la función de chat generativo a sus aplicaciones con la API de chat
Utilice la API de chat watsonx.ai para crear flujos de trabajo conversacionales que utilicen modelos de fundamentos para generar respuestas.
Formas de desarrollarse
Puede crear flujos de trabajo de chat utilizando estos métodos de programación:
También puede utilizar herramientas gráficas de la interfaz de usuario de watsonx.ai para crear flujos de trabajo de chat. Véase Conversar con documentos e imágenes.
Información General
La API de chat watsonx.ai implementa métodos para interactuar con los modelos de la fundación de forma conversacional. Puede identificar distintos tipos de mensajes, como una consulta del sistema, entradas del usuario y salidas del modelo de cimentación, incluidas las preguntas y respuestas de seguimiento específicas del usuario. Utilice la API de chat para imitar el flujo de trabajo que se obtiene al interactuar con un modelo de la fundación desde la página Prompt Lab en modo chat.
Modelos de cimientos compatibles
Para obtener mediante programación una lista de los modelos de cimientos compatibles con la API de chat, especifique el parámetro " filters=function_text_chat
" al enviar una solicitud del método Listar los modelos de cimientos disponibles.
Para obtener detalles del método API, consulte la documentación de referencia de la API watsonx.ai.
Por ejemplo:
curl -X GET \
'https://{region}.ml.cloud.ibm.com/ml/v1/foundation_model_specs?version=2024-10-10&filters=function_text_chat'
Para obtener más información sobre los modelos de base que admiten la llamada a herramientas, consulte Creación de flujos de trabajo basados en agentes con la API de chat.
API REST
Puede utilizar la API de chat para los siguientes tipos de tareas:
- Mantener una conversación entre varios usuarios con un modelo de base
- Chatea con una modelo de la fundación sobre imágenes
Para obtener detalles del método API, consulte la documentación de referencia de la API watsonx.ai.
Ejemplo de chat para varios usuarios
Por ejemplo, el siguiente comando envía una solicitud para chatear con el modelo de la fundación.
En el siguiente ejemplo, sustituya la variable {url}
por el valor correcto para su instancia, como us-south.ml.cloud.ibm.com
. Añade tu propio token al portador y tu ID de proyecto.
curl --request POST '{url}/ml/v1/text/chat?version=2024-10-08'
-H 'Authorization: Bearer eyJhbGciOiJSUzUxM...'
-H 'Content-Type: application/json'
-H 'Accept: application/json'
-d '{
"model_id": "meta-llama/llama-3-8b-instruct",
"project_id": "4947c695-a374-428c-acca-332c1a1dc9e9",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant that avoids causing harm. When you do not know the answer to a question, you say 'I don't know'."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "I have a question about Earth. How many moons does the Earth have?"
}
]
},
{
"role": "assistant",
"content": "The Earth has one natural satellite, which is simply called the Moon."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "What about Saturn?"
}
]
}
],
"max_tokens": 300,
"time_limit": 1000
}'
Respuesta de ejemplo:
{
"id": "chat-45932923166b4607bde75207a0a9f5d4",
"model_id": "meta-llama/llama-3-8b-instruct",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Saturn has a total of 82 confirmed moons!"
},
"finish_reason": "stop"
}
],
"created": 1728404199,
"created_at": "2024-10-08T16:16:40.102Z",
"usage": {
"completion_tokens": 12,
"prompt_tokens": 87,
"total_tokens": 99
},
"system": {
"warnings": [
{
"message": "This model is a Non-IBM Product governed by a third-party license that may impose use restrictions and other obligations. By using this model you agree to its terms as identified in the following URL.",
"id": "disclaimer_warning",
"more_info": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx"
}
]
}
}
Ejemplo de chat sobre una imagen
En este ejemplo se pide al modelo que explique lo que ilustra la siguiente imagen.
El código de muestra equivale a chatear con una imagen de Prompt Lab. Para obtener más información sobre el método alternativo que utiliza la interfaz de usuario, consulte Chatear con imágenes cargadas.
Los requisitos de imagen para las imágenes a las que se hace referencia desde la API de chat son los siguientes:
- Añadir una imagen por chat
- Los tipos de archivo admitidos son PNG o JPEG
- Una imagen equivale aproximadamente a entre 1.200 y 3.000 fichas, dependiendo del tamaño de la imagen
Para procesar la imagen, debe codificarla como Base64, que convierte los datos binarios de la imagen en una cadena de caracteres. Puedes utilizar una herramienta en línea para convertir la imagen o utilizar un código.
El siguiente ejemplo de código Python codifica una imagen alojada. Si llama a la API REST desde un cuaderno Python, puede utilizar este código para codificar la imagen. Luego, cuando defina la solicitud POST, puede especificar la image_b64_encoded_string
variable como el url
valor.
import wget, os, base64
filename = 'downloaded-image.png'
url = 'https://www.ibm.com/able/static/my-input-image.png'
if not os.path.isfile(filename):
wget.download(url, out=filename)
with open(filename, 'rb') as image_file:
image_b64_encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
La siguiente solicitud de la API REST utiliza la API de chat para chatear sobre una imagen que se especifica con una cadena Base64-encoded.
En el siguiente ejemplo, sustituya la variable {url}
por el valor correcto para su instancia, como us-south.ml.cloud.ibm.com
. Añade tu propio token al portador y tu ID de proyecto.
curl --request POST '{url}/ml/v1/text/chat?version=2024-10-09'
-H 'Authorization: Bearer eyJhbGciOiJSUzUxM...'
-H 'Content-Type: application/json'
-H 'Accept: application/json'
-d '{
"model_id": "meta-llama/llama-3-2-11b-vision-instruct",
"project_id": "4947c695-a374-428c-acca-332c1a1dc9e9",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "<encoded_string>"
}
},
{
"type": "text",
"text": "What does the image convey about alternative image text?"
}
]
}
],
"max_tokens": 300,
"time_limit": 10000
}'
Respuesta de ejemplo:
{
"id": "chat-f5f3ab2b8d7f4657b72a4f868e24f3fd",
"model_id": "meta-llama/llama-3-2-90b-vision-instruct",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The image shows a bar chart on a laptop screen with alternative image text that describes the content of the image. The alternative image text is \"bar chart showing month's daily sales against historical average.\" This text provides a clear and concise description of the image, allowing users who cannot see the image to understand its content.\n\n**Key Points:**\n\n* The image is a bar chart on a laptop screen.\n* The alternative image text describes the content of the image.\n* The alternative image text is \"bar chart showing month's daily sales against historical average.\"\n* The text provides a clear and concise description of the image.\n\n**Conclusion:**\n\nThe image conveys that alternative image text should be used to provide a clear and concise description of an image, even if the image cannot be seen. This is important for accessibility reasons, as it allows users who cannot see the image to still understand its content."
},
"finish_reason": "stop"
}
],
"created": 1728564568,
"model_version": "3.2.0",
"created_at": "2024-10-10T12:49:35.286Z",
"usage": {
"completion_tokens": 184,
"prompt_tokens": 21,
"total_tokens": 205
},
"system": {
"warnings": [
{
"message": "This model is a Non-IBM Product governed by a third-party license that may impose use restrictions and other obligations. By using this model you agree to its terms as identified in the following URL.",
"id": "disclaimer_warning",
"more_info": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx"
}
]
}
}
Resolución de problemas de la API de chat
Si la respuesta está en formato HTML y menciona ' Gateway time-out
, es probable que la petición haya tardado demasiado y haya caducado. Aumenta el valor del campo ' time_limit
' que especifiques en la solicitud.
Python
Véase la clase ModelInference de la biblioteca watsonx.ai Python.
Para empezar, consulte los siguientes cuadernos de muestra:
- Utilice la API REST para completar tareas conversacionales: Utilizar watsonx, y mistral-large para realizar llamadas sencillas a conversaciones de chat y herramientas
- Utilice el SDK de Python para conversar sobre una imagen: Utilice watsonx, y meta-llama/llama-3-2-11b-vision-instruct modelo para el procesamiento de imágenes para generar una descripción del logotipo IBM
- Utilice el SDK Python para generar respuestas en formato JSON mientras conversa con el modelo
granite-3-3-8b-instruct
: Utilice watsonx, y ibm/granite-3-3-8b-instruct para realizar conversaciones de chat con formato de respuesta JSON - Utilice el SDK Python para chatear con el modelo
granite-3-3-8b-instruct
y controlar la respuesta del modelo de las siguientes maneras:- El modelo proporciona detalles sobre el razonamiento utilizado para generar una respuesta.
- El modelo resume un tema utilizando el contenido directamente del tema o parafraseando el contenido con las propias palabras del modelo. Para más detalles, consulte Utilizar watsonx, y ibm/granite-3-3-8b-instruct para realizar conversaciones de chat con roles de control.
Más información
- Credenciales de acceso a los programas
- Prompt Lab
- Chatear con documentos y archivos multimedia
- Creación de flujos de trabajo basados en agentes con la API de chat
- Modelos de cimientos compatibles
Tema principal: Generar texto con código