No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Chat Completions: modelos de Chat de OpenAI

3/24
Recursos

En el competitivo mundo de la inteligencia artificial, la comunicación eficiente y efectiva a través de modelos lingüísticos es una herramienta crucial. Con las recientes innovaciones en la tecnología de IA, como GPT 3.5 Turbo y GPT 4, la interacción se ha llevado a un nuevo nivel: el de las chat completions. Vamos a sumergirnos en este fascinante tema para entender mejor cómo potenciar nuestros proyectos con estas herramientas avanzadas.

¿Qué son las chat completions y cómo funcionan?

Las chat completions representan una evolución en el uso de modelos de lenguaje. A diferencia de las completions tradicionales, que se basan en una única entrada (o prompt) y devuelven una salida generativa en función de la misma, las chat completions permiten una interacción más rica y profunda. Esto se debe a que proporcionamos un contexto más detallado y estructurado al modelo, utilizando roles y ejemplos específicos que guían las respuestas del sistema.

¿Cómo se estructuran los roles en las chat completions?

Para manejar eficazmente una chat completion, debemos establecer claramente los roles:

  • Role system: Este rol se utiliza para establecer el contexto principal del asistente, indicándole, por ejemplo, que se comporte como un experto en deportes o un agente de marketing.

  • Role user: Representa al usuario que realiza preguntas o solicita información, interactuando con el asistente configurado bajo el rol de sistema.

¿Cuáles son los modelos disponibles para chat completions?

Los modelos que actualmente soportan las chat completions son dos poderosos aliados:

  • GPT 3.5 Turbo: Es la versión optimizada del GPT-3, que ofrece respuestas más rápidas y de alta calidad.

  • GPT 4: La evolución más reciente, que promete ser aún más avanzada en términos de capacidad de entendimiento y generación de lenguaje.

¿Cómo definimos y manejamos los parámetros en chat completions?

Los parámetros en chat completions son fundamentales para obtener respuestas precisas y acordes al contexto deseado. Entre ellos destacan:

  • La elección del modelo: Seleccionar entre GPT 3.5 Turbo o GPT 4 según las necesidades del proyecto.

  • La temperatura: Ajustar este parámetro para controlar el grado de libertad del modelo en sus respuestas, buscando un equilibrio entre creatividad y precisión.

  • El manejo de tokens: El control de la longitud y el costo de las respuestas, vital para una gestión eficiente y efectiva del modelo.

Con el manejo adecuado de estos parámetros, el modelo puede proporcionar respuestas contextualizadas y detalladas, enriqueciendo la interacción hasta niveles que se asemejan al entendimiento humano.

¿Cuáles son las aplicaciones prácticas de las chat completions?

Explorando las capacidades de las chat completions, nos encontramos con un abanico de aplicaciones:

  • Creación de emails: Podemos generar correos electrónicos basados en ciertos criterios o estilos.

  • Programación: Asistir en la estructuración de código, ofreciendo ejemplos o corrigiendo errores.

  • Desarrollo de agentes conversacionales: Implementar asistentes virtuales especializados en áreas como el soporte al cliente o la educación.

Diferencias clave entre chat completions y completions tradicionales

Entender las diferencias entre estas dos herramientas es crucial:

  • Entrada de datos: Mientras que con completions tradicionales se maneja un único prompt, las chat completions permiten múltiples turnos con ejemplos detallados y roles definidos.

  • Salida generada: La interactividad es mayor en chat completions, proporcionando respuestas generadas a través de un diálogo continuado, en vez de una única respuesta directa.

  • Casos de uso: Las chat completions se prestan idealmente para diálogos de múltiples turnos, mientras que las completions resultan más apropiadas para consultas directas y puntuales.

  • Modelos compatibles: Las chat completions se limitan al uso de GPT 3.5 Turbo y GPT 4, ofreciendo opciones más sofisticadas y enfocadas que los modelos disponibles para completions tradicionales.

La revolución que han traído las chat completions al mundo de la inteligencia artificial es palpable y su aplicabilidad infinita. Si te aventuras en la emocionante tarea de construir tu propio asistente, no olvides la importancia de familiarizarte con la documentación y experimentar con los distintos parámetros, permitiéndote así descubrir el verdadero potencial de estos avanzados modelos lingüísticos. Continúa aprendiendo y experimentando, y prepárate para el siguiente nivel con Fine Tuning en modelos de OpenAI. ¡El viaje apenas comienza!

Aportes 23

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para Julio de 2023 la Completions API recibió su última actualización y fue marcada como tecnologia legacy

Chat Completions

Todos los Parametros para chat completions: Click aqui
.

<h5>Aqui hay un post para comprender la diferencia entre completions(Fine tuning models) y Chat Completions ejemplificados en un caso de estudio.</h5>

Una comparación de la calidad, los costos y la latencia de los modelos ajustados
https://betterprogramming.pub/openai-api-fine-tuned-models-vs-chat-completion-a-case-study-e3774fadc8c7

Cuando chatGPT dice que no se ha celebrado el mundial, se debe a que la info que tiene el modelo GPT-3.5 es informacion que va hasta el 2021, por eso el da esa respuesta. Esto es un factor muy importante a tomar en cuenta dependiendo de los datos historicos que necesitemos para nuestras API.

Hola a todos. Despúes de la actualización del 7 de Noviembre de 2023, todos los comandos cambiaron. Para tener un acercamiento mucho más actualizado miren esta parte de la nueva documentación: <https://platform.openai.com/docs/quickstart?context=python>

ChatCompletion con stream=True.

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are an assistant"},
        {"role": "user", "content": "What is AI?"},
        {"role": "assistant", "content": "AI is Artificial Intelligence"},
        {"role": "user", "content": "What are LLM models?"}

    ],
    max_tokens=300,
    temperature=0,
    n=1,
    stream=True,
)

for chunk in response:
    if chunk.choices[0].delta.get("content"):
        print(chunk.choices[0].delta.content, end="")

Es sumamente importante validar el if chunk.choices[0].delta.get("content") porque en algunos casos no devuelve la llave content dentro del diccionario. Entonces con esto se evita que lance una excepción de tipo KeyError

Con la actualizacion del 7 de Noviembre de 2023, cambio bastante la forma de consumir OpenAi. Docs: <https://platform.openai.com/docs/quickstart?context=python> Clase adaptada a nueva version ```python from openai import OpenAI client = OpenAI( api\_key = <\<TU\_KEY>>) completion = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = \[ { "role": "system", "content": "Eres un asistente que da informacion sobre deportes" }, { "role": "user", "content": "Quien gano el mundial de futbol 2022?" }, { "role": "assistant", "content": "El mundial de 2022 lo gano Argentina" }, { "role": "user", "content": "Donde se jugo?" } ]) print(completion.choices\[0].message) ```

La nueva manera de usar ChatGPT-3.5 Turbo cambió y es de la siguiente manera:

from openai import AsyncOpenAI

client = AsyncOpenAI(api_key='your-open-ai-key-here')

completion = await client.chat.completions.create(
    model = 'gpt-3.5-turbo',
    messages = [
        {"role": "system", "content" :"Eres un asistente que da información sobre deportes"},
        {"role": "user", "content" :"¿Quién ganó el mundial de fútbol?"}]
)
response_content = completion.choices[0].message.content
print(response_content)

Acá, Sam Altman nos habla sobre las últimas novedades de los lanzamientos del nuevo modelo y otras herramientas. En general, el modelo GPT-4 Turbo será más barato para usar por tokens que el modelo GPT-3.5. También tendremos una opción para proteger los datos de la empresa a través del uso exclusivo de ChatGPT Enterprise.

https://openai.com/enterprise

https://www.youtube.com/watch?v=U9mJuUkhUzk&t=1s

role: Define el rol del participante en la conversación, que puede ser system, user, o assistant. system: Define el comportamiento o contexto del asistente. En este caso, se le dice que actúe como un "Senior Developer que explica buenas prácticas". user: Representa lo que el usuario (la persona que está interactuando con el modelo) ha dicho o preguntado. En este caso, el usuario pregunta sobre "¿Qué lenguaje es usado para Machine Learning?" y luego "¿Qué empresas lo usan?". assistant: Representa la respuesta del modelo de lenguaje. Aquí el asistente responde que "El lenguaje de programación es Python".
En efecto necesita un update el codigo espero les sirva: ```js from openai import OpenAI client = OpenAI(api_key='YOUR API KEY') response = client.chat.completions.create( model = "gpt-4o-mini", messages = [ {"role": "system", "content": "Eres un asistente que da informacion sobre deportes"}, {"role": "user", "content": "¿Quien ha gando mas veces la carrera de sierre zinal?"}, {"role": "assistant", "content": "Kilian Jornet es el maximo ganador de esta carrera, el GOAT"}, {"role": "user", "content": "¿Cuantas veces ha ganado la carrera?"} ], temperature = 0.2 ) print(response.choices[0].message.content) ``` `Aqui el resultado del codigo anterior:` ```python (openai-env) ivankom@pop-os:~$ /home/ivankom/Documents/ChatBotsWithOpenAI/pythonVE/openai-env/bin/python /home/ivankom/Documents/ChatBotsWithOpenAI/pythonVE/openai-env/chatCompletion.py Kilian Jornet ha ganado la carrera de Sierre-Zinal en un total de 5 ocasiones, con victorias en los años 2007, 2008, 2009, 2010 y 2013. Su dominio en esta carrera lo ha consolidado como uno de los mejores corredores de montaña del mundo. ``` `Es importante tener en cuenta que necesitamos tener saldo dentro de <https://platform.openai.com/settings/organization/billing/overview> de lo contrario nos dara un error de no contar con suficiente saldo xD.`
Si no les deja usar openai.ChatCompletion.create() es porque tienen que instalar la versión 0.28 con !pip install openai==0.28

ya no se puede acceder al modelo de chatgpt 4

<response = openai.ChatCompletion.create(
    model = 'gpt-3.5-turbo',
    messages = [
        {"role":"system","content":"Eres un otaku que da informacion sobre anime"},
        {"role":"user","content":"quien es naruto"},
        {"role":"assistant","content":"ser hokage es el maximo rol que puede alacanzar un ninja es aquel que tiene la fuerza para proteger la aldea y la sabiduria para guiarla "},
        {"role":"user","content":"quienes han sido los hokages"},
    ],
    temperature = 1
)
print(response['choices'][0]['message']['content'])> 

A lo largo de la historia del manga y anime de Naruto, ha habido varios Hokages. Aquí tienes la lista de los Hokages hasta la fecha:

  1. Hashirama Senju - Fue el primer Hokage y cofundador de la aldea de Konoha.
  2. Tobirama Senju - El hermano menor de Hashirama, fue el segundo Hokage.
  3. Hiruzen Sarutobi - Conocido como el “Profesor” o “God of Shinobi”, fue el tercero en ocupar el cargo de Hokage.
  4. Minato Namikaze - El cuarto Hokage y conocido como el “Relámpago Amarillo de Konoha”, es el padre de Naruto.
  5. Tsunade Senju - La quinta Hokage, es una renombrada médica ninjutsu y es conocida por su fuerza y habilidades curativas.
  6. Kakashi Hatake - Siendo uno de los personajes principales de la serie, Kakashi se convirtió en el sexto Hokage después de la Cuarta Guerra Mundial Ninja.
  7. Naruto Uzumaki - El protagonista principal de la serie, Naruto se convirtió en el séptimo Hokage después de muchos acontecimientos y desafíos a lo largo de su vida.

Estos son los principales Hokages que han aparecido en Naruto.

Mi primer asistente: ```python import openai openai.api_key = 'Clave API' # Modelo model = "gpt-4o-mini" response = openai.chat.completions.create( model=model, messages=[ {"role": "system", "content": "Eres un asistente que da información de personajes históricos."}, {"role": "user", "content": "¿Quién era Alan Turing?"}, {"role": "assistant", "content": "Fue famoso por descifrar el código nazi en la Segunda Guerra Mundial y pionero en otras ramas como la biología y la inteligencia artificial."}, {"role": "user", "content": "En que fecha y donde nació"} ], temperature = 0.2 ) # Imprime la respuesta print(response.choices[0].message.content) ```
Aunque ajusto la temperatura no tengo cambios en la respuesta ![](https://static.platzi.com/media/user_upload/image-876be9fb-9216-4ef1-b1b2-88a3c1345d81.jpg)![](https://static.platzi.com/media/user_upload/image-4390469d-48ba-49b3-a871-6ef2b3fef7b2.jpg)
me marca muchos errores creo hay que actualizar
```js response = openai.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "Eres un asistente que das informacion sobre deporte"}, {"role": "user", "content": "Quien gano el mundial de futbol?"}, {"role": "assistant", "content": "El mundial del 2022 lo gano Argentina"}, {"role": "user", "content": "Donde se jugo?"} ] ) print(response.choices[0].message.content) ```
response = openai.chat.completions.create( model="gpt-3.5-turbo", messages=\[ {"role": "system", "content": "Eres un asistente que das informacion sobre deporte"}, {"role": "user", "content": "Quien gano el mundial de futbol?"}, {"role": "assistant", "content": "El mundial del 2022 lo gano Argentina"}, {"role": "user", "content": "Donde se jugo?"} ])print(response.choices\[0].message.content)
La forma en que me funciono a la fecha. ```js response = openai.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "Eres un asistente que das informacion sobre deporte"}, {"role": "user", "content": "Quien gano el mundial de futbol?"}, {"role": "assistant", "content": "El mundial del 2022 lo gano Argentina"}, {"role": "user", "content": "Donde se jugo?"} ] ) print(response.choices[0].message.content) ```response = openai.chat.completions.create( model="gpt-3.5-turbo", messages=\[ {"role": "system", "content": "Eres un asistente que das informacion sobre deporte"}, {"role": "user", "content": "Quien gano el mundial de futbol?"}, {"role": "assistant", "content": "El mundial del 2022 lo gano Argentina"}, {"role": "user", "content": "Donde se jugo?"} ])print(response.choices\[0].message.content)
Para hoy 18/12/23 el codigo que me dio respuesta es el siguiente: ```python from openai import OpenAI client = OpenAI(api_key='Key_creado') completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content" :"Eres un asistente que da información sobre deportes"}, {"role": "user", "content" :"¿Quién ganó el mundial de fútbol?"}] ) print(completion.choices[0].message) ```from openai import OpenAIclient = OpenAI(api\_key='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') completion = client.chat.completions.create(  model="gpt-3.5-turbo",  messages=\[        {"role": "system", "content" :"Eres un asistente que da información sobre deportes"},        {"role": "user", "content" :"¿Quién ganó el mundial de fútbol?"}] ) print(completion.choices\[0].message)
GPT-4 usando ChatCompletion es otro nivel! Usé los siguientes parámetros y vuela! respuestas acorde a lo indicado siempre ```js def give_property(animal, input_user): response = openai.ChatCompletion.create( model = "gpt-4", messages = [ {"role": "system", "content": "Juego de adivinar el animal, debes indicar pistas del animal sin mencionar su nombre"}, {"role": "system", "content": f"En cuál animal estpy pensando?"}, {'role': 'user', 'content': f"creo que la respuesta es {input_user}"}, {"role": "system", "content": f"Si {input_user} no coincide con {animal} /n te doy la primera pista relacionada a {animal}"}, {'role': 'user', 'content': f"creo que la respuesta es {input_user}"}, {"role": "system", "content": "Si {input_user} no coincide con {animal} responder en tono jocoso /n tu respuesta {input_user} es incorrecta por el siguiente motivo /n acá te va otra pista"}, ], temperature = 1, ) return response['choices'][0]['message']['content'] ```def give\_property(animal, input\_user):    response = openai.ChatCompletion.create(        model = "gpt-4",        messages = \[            {"role": "system", "content": "Juego de adivinar el animal, debes indicar pistas del animal sin mencionar su nombre"},            {"role": "system", "content": f"En cuál animal estpy pensando?"},            {'role': 'user', 'content': f"creo que la respuesta es {input\_user}"},            {"role": "system", "content": f"Si {input\_user} no coincide con {animal} /n te doy la primera pista relacionada a {animal}"},            {'role': 'user', 'content': f"creo que la respuesta es {input\_user}"},            {"role": "system", "content": "Si {input\_user} no coincide con {animal} responder en tono jocoso /n tu respuesta {input\_user} es incorrecta por el siguiente motivo /n acá te va otra pista"},        ],        temperature = 1,    )    return response\['choices']\[0]\['message']\['content']
la api ha sido actualizada, ahora quedaria asi `response = openai.chat.completions.create( model="gpt-3.5-turbo", messages = [ {"role":"system","content":"Eres un asistente que da informacion sobre deportes"}, {"role":"user","content":"¿quien gano el mundial de futbol?"}, {"role":"assistant","content":"El mundial del 2022 ganó argentina"}, {"role":"user","content":"¿Donde se jugó?"}, ])`
En efecto necesita un update el codigo espero les sirva: ```python from openai import OpenAI client = OpenAI(api_key='YOUR API KEY') response = client.chat.completions.create( model = "gpt-4o-mini", messages = [ {"role": "system", "content": "Eres un asistente que da informacion sobre deportes"}, {"role": "user", "content": "¿Quien ha gando mas veces la carrera de sierre zinal?"}, {"role": "assistant", "content": "Kilian Jornet es el maximo ganador de esta carrera, el GOAT"}, {"role": "user", "content": "¿Cuantas veces ha ganado la carrera?"} ], temperature = 0.2 ) print(response.choices[0].message.content) ```Aqui el resultado del codigo anterior: ```python (openai-env) ivankom@pop-os:~$ /home/ivankom/Documents/ChatBotsWithOpenAI/pythonVE/openai-env/bin/python /home/ivankom/Documents/ChatBotsWithOpenAI/pythonVE/openai-env/chatCompletion.py Kilian Jornet ha ganado la carrera de Sierre-Zinal en un total de 5 ocasiones, con victorias en los años 2007, 2008, 2009, 2010 y 2013. Su dominio en esta carrera lo ha consolidado como uno de los mejores corredores de montaña del mundo. ```Es importante tener en cuenta que necesitamos tener saldo dentro de <https://platform.openai.com/settings/organization/billing/overview> de lo contrario nos dara un error de no contar con suficiente saldo xD.