Para crear tu propio servicio similar a ChatGPT, es importante entender cómo está construido ChatGPT y cómo implementar los distintos componentes.

Tabla de contenidos

Para principiantes

ChatGPT no es un Large Language Model (LLM), o una interfaz de desarrollo, es un servicio conversacional que está disponible y alojado por OpenAI.

En resumen, el servicio ChatGPT de OpenAI es una interfaz de usuario conversacional basada en LLM a través de un navegador, que gestiona automáticamente la memoria conversacional y el estado del diálogo.

ChatGPT Plus y ChatGPT Plugins son claros indicios de que OpenAI pretende desarrollar ChatGPT como un producto que se extienda a la oferta de servicios.

Dos principios clave que ChatGPT Plus y Plugins dominan son:

     

      • Síntesis de datos. ChatGPT puede extraer datos de diversas fuentes. Por ejemplo, se pueden combinar y sintetizar datos existentes en el LLM junto con datos extraídos de la web. Los datos procedentes de diversas fuentes deben sintetizarse en turnos de diálogo coherentes y sucintos dentro de una conversación más amplia.

      • Calibración. La interfaz necesita saber de dónde extraer datos y a qué datos dar prioridad.

    Plugins de ChatGPT

    Plugins es una progresión natural para que ChatGPT se extienda en productos y servicios con el fin de ser habilitado para ejecutar las solicitudes de los usuarios.

    Los plugins OpenAI conectan ChatGPT a aplicaciones de terceros. Estos plugins permiten a ChatGPT interactuar con API definidas por desarrolladores, mejorando las capacidades de ChatGPT y permitiéndole realizar una amplia gama de acciones.

    Los plugins de ChatGPT crecerán en número de servicios compatibles y granularidad. El concepto de plugins ha sido descrito por algunos como la AppStore de OpenAI o ChatGPT.

    Estructura de ChatGPT

    Con el lanzamiento de la API ChatGPT, la expectativa de los desarrolladores era una interfaz conversacional completa y gestionada; lo que no fue el caso.

    Como puede verse en la siguiente imagen, la API de ChatGPT da acceso a los modelos LLM (4) utilizados para ChatGPT, que se enumeran a continuación. Sin embargo, para los componentes 1, 2 y 3, la funcionalidad tendrá que desarrollarse para cualquier solución propia.

    La funcionalidad para el componente tres (síntesis de datos y calibración) será probablemente más difícil de desarrollar de tal forma que se iguale la funcionalidad desarrollada por OpenAI.

    Más información sobre la gestión de la memoria contextual de la conversación y el estado del diálogo aquí.

    Modelos de ChatGPT

    ChatGPT se basa en dos de los modelos más potentes de OpenAI: gpt-3.5-turbo y gpt-4.
    gpt-3.5-turbo es una colección de modelos que mejora gpt-3 y que puede entender y también generar lenguaje natural o código. A continuación encontrará más información sobre los dos modelos gpt-3:

    Hay que señalar que gpt-4, que actualmente se encuentra en fase beta limitada, es un conjunto de modelos que, de nuevo, mejora a GPT-3.5 y puede comprender y también generar lenguaje natural o código.

    GPT-4 se encuentra actualmente en fase beta limitada y sólo es accesible para quienes hayan obtenido acceso.

    Formatos de inputs

    Puedes construir tus propias aplicaciones con gpt-3.5-turbo o gpt-4 usando la API OpenAI, haciendo uso del código de ejemplo de abajo para empezar.

    Fíjate en el formato de los datos de entrada, puedes leer más sobre Chat Markup Language (ChatML) aquí.

    pip install openai

    import os
    import openai
    openai.api_key = "xxxxxxxxxxxxxxxxxxxxxxx"

    completion = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages = [{"role": "system", "content" : "You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\nKnowledge cutoff: 2021-09-01\nCurrent date: 2023-03-02"},
    {"role": "user", "content" : "How are you?"},
    {"role": "assistant", "content" : "I am doing well"},
    {"role": "user", "content" : "How long does light take to travel from the sun to the eart?"}]
    )
    print(completion)

    A continuación se muestra la respuesta o salida del modelo gpt-3.5-turbo:

    { "choices": [ { "finish_reason": "stop", "index": 0, "message": { "content": "It takes about 8 minutes and 20 seconds for light to travel from the sun to the earth.", "role": "assistant" } } ], "created": 1678039126, "id": "chatcmpl-6qmv8IVkCclnlsF5ODqlnx9v9Wm3X", "model": "gpt-3.5-turbo-0301", "object": "chat.completion", "usage": { "completion_tokens": 23, "prompt_tokens": 89, "total_tokens": 112 } }

    Las definiciones de los campos del objeto de respuesta son

    • id: el ID de la solicitud
    • object: el tipo de objeto devuelto (por ejemplo, chat.completion)
    • created: fecha y hora de la solicitud
    • model: nombre completo del modelo utilizado para generar la respuesta
    • usage: el número de tokens utilizados para generar las respuestas, contando prompt, completion y total
    • choices: una lista de objetos de finalización (sólo uno, a menos que establezca n mayor que 1)
    • message: el objeto mensaje generado por el modelo, con rol y contenido
    • finish_reason: la razón por la que el modelo ha dejado de generar texto (o bien stop, o bien length si se ha alcanzado el límite max_tokens)
    • index: el índice de la finalización en la lista de opciones

    Por último

    Además de la falta de gestión del contexto, OpenAI también afirma que gpt-3.5-turbo-0301 no presta mucha atención al mensaje del sistema, y es necesario prestar más atención a las instrucciones de un mensaje de usuario.

    Si la salida generada por el modelo no es satisfactoria, es necesario iterar y experimentar para obtener mejoras. Por ejemplo:

    • Haciendo las instrucciones más explícitas
    • Especificando el formato de la respuesta
    • Pidiendo al modelo que piense paso a paso o secuencialmente

    En tercer y último lugar, los modelos gpt-3.5-turbo no disponen de ajuste fino; sólo pueden ajustarse los modelos GPT-3 de base.

    By Cobus Greyling

    Rasa Hero. NLP / NLU, Chatbots, Voz, UI / UX conversacional, Diseñador CX, Desarrollador, Interfaces de usuario ubicuas.

    Leave a Reply

    Your email address will not be published. Required fields are marked *