For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

ChatKit

Crea y personaliza con ChatKit un chat que puedes integrar en tu sitio.

ChatKit es la mejor forma de crear experiencias de chat con agentes. Ya sea que desarrolles un asistente para consultar una base de conocimientos interna, incorporar personal, investigar, hacer compras o programar citas, un bot para resolver problemas, un asesor de planificación financiera o un agente de soporte, ChatKit te ofrece un chat personalizable que puedes integrar en tu aplicación y que se encarga de todos los detalles de la experiencia de usuario.

Usa los widgets de interfaz integrables de ChatKit, los prompts personalizables, las llamadas a herramientas, los archivos adjuntos y las visualizaciones de la cadena de pensamiento para crear agentes sin tener que diseñar la interfaz de chat desde cero.

Descripción general

Elige una de las dos opciones de integración de ChatKit:

  • Integración con un servidor propio. Ejecuta ChatKit en tu propia infraestructura. Usa el SDK de ChatKit para Python y conéctate a cualquier servicio de agentes, incluidos los que se crean con el SDK de Agentes. Usa widgets para crear el frontend.
  • Integración existente alojada en Agent Builder. Si ya usas ChatKit con un flujo de trabajo de Agent Builder, puedes seguir usando ese flujo alojado durante el período de transición de Agent Builder.

OpenAI está retirando Agent Builder. Quienes ya lo usan pueden seguir haciéndolo durante el período de transición. El cierre del producto está previsto para el 30 de noviembre de 2026. ChatKit sigue disponible. Para nuevos desarrollos o para planificar la migración, usa las integraciones avanzadas de ChatKit con tu propia implementación de agentes en el servidor y consulta la guía Migrar desde Agent Builder para obtener orientación sobre la transición de Agent Builder.

Primeros pasos con ChatKit

Integra ChatKit en tu frontend

Usa esta opción solo si tu implementación de ChatKit ya utiliza un flujo de trabajo de Agent Builder. Si creas una aplicación nueva con ChatKit o migras una existente antes del cierre de Agent Builder, usa la integración avanzada para conectar ChatKit a tu propia implementación de agentes en el servidor.

La configuración de ChatKit con un flujo de trabajo ya alojado consta de tres pasos. Abre tu flujo de trabajo mientras Agent Builder siga disponible. Luego configura ChatKit y agrega funciones para crear tu experiencia de chat.


ChatKit alojado por
OpenAI

1. Usa un flujo de trabajo ya alojado

Abre tu flujo de trabajo existente en Agent Builder. Obtendrás el ID del flujo de trabajo. Para planificar la transición, consulta la guía para migrar desde Agent Builder.

El chat integrado en tu frontend se conectará al flujo de trabajo que selecciones.

2. Configura ChatKit en tu producto

Para configurar ChatKit, crearás una sesión de ChatKit y un punto de acceso en el servidor, pasarás el ID de tu flujo de trabajo, intercambiarás el secreto de cliente y agregarás un script para integrar ChatKit en tu sitio.

Nota importante sobre seguridad: al crear una sesión de ChatKit, debes pasar el parámetro user con un valor único para cada usuario final. Tu servidor debe autenticar a los usuarios de tu aplicación y pasar en este parámetro un identificador único para cada uno.

  1. Genera un token de cliente en tu servidor.

    Este ejemplo inicia un servicio que crea una sesión de ChatKit mediante la API de OpenAI y devuelve el secreto de cliente de la sesión:

    # Replace the illustrative IDs and URLs below with your own resource values.
    import hmac
    import json
    import os
    from typing import Annotated
    
    import requests
    from fastapi import Depends, FastAPI, HTTPException
    from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
    from pydantic import BaseModel
    
    
    api_key = os.environ["OPENAI_API_KEY"]
    workflow_id = "wf_123"
    authenticated_users: dict[str, str] = json.loads(
        os.environ["CHATKIT_AUTHENTICATED_USERS"]
    )
    bearer_auth = HTTPBearer(auto_error=False)
    
    
    def get_authenticated_user_id(
        credentials: Annotated[
            HTTPAuthorizationCredentials | None,
            Depends(bearer_auth),
        ],
    ) -> str:
        if credentials is not None:
            for token, user_id in authenticated_users.items():
                if hmac.compare_digest(credentials.credentials, token):
                    return user_id
        raise HTTPException(status_code=401, detail="Invalid authentication token")
    
    
    class ChatKitSession(BaseModel):
        client_secret: str
    
    
    app = FastAPI()
    
    
    @app.post("/api/chatkit/session")
    def create_chatkit_session(
        user_id: Annotated[str, Depends(get_authenticated_user_id)],
    ):
        response = requests.post(
            "https://api.openai.com/v1/chatkit/sessions",
            headers={
                "Authorization": f"Bearer {api_key}",
                "Content-Type": "application/json",
                "OpenAI-Beta": "chatkit_beta=v1",
            },
            json={
                "workflow": {"id": workflow_id},
                "user": user_id,
            },
            timeout=30,
        )
        response.raise_for_status()
        session = ChatKitSession.model_validate(response.json())
        return {"client_secret": session.client_secret}

    Para Ruby, instala WEBrick con gem install webrick.

    Antes de iniciar el servicio, reemplaza wf_123 por el ID de tu flujo de trabajo y configura OPENAI_API_KEY y CHATKIT_AUTHENTICATED_USERS. El valor de esta última variable es un mapa JSON que asocia los tokens de portador de tu aplicación con identificadores de usuario estables. En producción, reemplaza este mapa definido en una variable de entorno por el mecanismo de autenticación o de consulta de sesiones de tu aplicación.

  2. En el código del servidor, pasa el ID de tu flujo de trabajo y tu clave secreta al punto de acceso de sesiones.

    El secreto de cliente es la credencial que usa tu frontend de ChatKit para abrir o renovar la sesión de chat. Pásalo de inmediato a la biblioteca cliente de ChatKit sin almacenarlo.

    Consulta el repositorio de chatkit-js en GitHub.

    Para Go, ejecuta go get github.com/openai/openai-go/v3@v3.70.0. Para Java, agrega la dependencia de Maven com.openai:openai-java:4.75.1.

    Crea un token de sesión de ChatKit
    export default async function getChatKitSessionToken(deviceId) {
      const apiKey = process.env.OPENAI_API_KEY;
      if (!apiKey) {
        throw new Error("OPENAI_API_KEY is required");
      }
    
      const response = await fetch("https://api.openai.com/v1/chatkit/sessions", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          "OpenAI-Beta": "chatkit_beta=v1",
          Authorization: `Bearer ${apiKey}`,
        },
        body: JSON.stringify({
          workflow: { id: "wf_68df4b13b3588190a09d19288d4610ec0df388c3983f58d1" },
          user: deviceId,
        }),
      });
    
      if (!response.ok) {
        throw new Error(
          `Failed to create a ChatKit session: ${response.status} ${await response.text()}`
        );
      }
    
      const { client_secret } = await response.json();
    
      if (!client_secret) {
        throw new Error("ChatKit session response did not include client_secret");
      }
    
      return client_secret;
    }
  3. En el directorio de tu proyecto, instala los bindings de ChatKit para React:

    npm install @openai/chatkit-react
  4. Agrega el script JS de ChatKit a tu página. Coloca este fragmento en el <head> de la página o donde cargues los scripts. El navegador descargará y ejecutará ChatKit.

    index.html
    <script
    src="https://cdn.platform.openai.com/deployments/chatkit/chatkit.js"
    async
    ></script>
  5. Muestra ChatKit en tu interfaz. Pasa al componente MyChat de React una función getAppAuthToken que devuelva el token de portador del usuario actual. Si usas la pestaña de JavaScript, asegúrate de que esa misma función esté disponible en el ámbito del fragmento de código. Este código envía la credencial a tu servidor, obtiene el secreto de cliente y monta un widget de chat en vivo conectado a tu flujo de trabajo.

    Código de tu frontend
    import { ChatKit, useChatKit } from '@openai/chatkit-react';
    
       export function MyChat({ getAppAuthToken }) {
         const { control } = useChatKit({
           api: {
             async getClientSecret(existing) {
               if (existing) {
                 // implement session refresh
                }
    
               const appAuthToken = await getAppAuthToken();
               const res = await fetch('/api/chatkit/session', {
                 method: 'POST',
                 headers: {
                   'Authorization': 'Bearer ' + appAuthToken,
                   'Content-Type': 'application/json',
                 },
               });
               const { client_secret } = await res.json();
               return client_secret;
             },
           },
         });
    
         return <ChatKit control={control} className="h-[600px] w-[320px]" />;
       }

3. Desarrolla y perfecciona tu chat

Consulta la documentación sobre temas personalizados, widgets y acciones para saber más sobre el funcionamiento de ChatKit. También puedes explorar los siguientes recursos para probar tu chat, ajustar los prompts y agregar widgets y herramientas.

Desarrolla tu implementación

Documentación de ChatKit en GitHub

Aprende a gestionar la autenticación, aplicar temas, personalizar el chat y más.

SDK de ChatKit para Python

Agrega almacenamiento en el servidor, control de acceso, herramientas y otras funciones del backend.

SDK de ChatKit para JavaScript

Explora el repositorio de ChatKit para JavaScript.

Explora la interfaz de ChatKit

chatkit.world

Prueba una demo interactiva de ChatKit.

Creador de widgets

Explora los widgets disponibles.

Playground de ChatKit

Aprende con una demo interactiva que puedes probar por tu cuenta.

Consulta ejemplos funcionales

Ejemplos en GitHub

Explora ejemplos funcionales de ChatKit para inspirarte.

Repositorio de la aplicación de ejemplo

Clona el repositorio para empezar con una plantilla totalmente funcional.

Próximos pasos

Cuando estés conforme con tu implementación de ChatKit, aprende a optimizarla con evaluaciones. Si vas a crear una aplicación con ChatKit o a migrar una aplicación de ChatKit existente para que deje de usar un flujo de trabajo alojado en Agent Builder, consulta la documentación de la integración avanzada.