¡Hey Coders! En la era moderna de la tecnología, la inteligencia artificial ha tomado un papel protagonista en diversas aplicaciones, desde asistentes virtuales hasta análisis predictivo. Uno de los modelos más avanzados y populares en este ámbito es ChatGPT, desarrollado por OpenAI. ¿Pero qué sucedería si quisiéramos llevar la experiencia de conversación con ChatGPT fuera de las interfaces web convencionales y trasladarla directamente a una terminal o consola? En este tutorial, nos embarcaremos en un viaje donde exploraremos cómo podemos combinar la potencia del lenguaje de programación Python con la API de OpenAI para crear una aplicación de terminal que emule una conversación al estilo ChatGPT. No solo ampliaremos nuestros conocimientos en programación y el manejo de APIs, sino que también descubriremos nuevas formas de interactuar con inteligencias artificiales en entornos más tradicionales. Prepárate para combinar lo clásico con lo moderno y sumérgete en este fascinante proyecto. ¡Comencemos!

Creación de Entorno virtual

source venv/bin/activate
python

Primera Peticion

import openai
openai.api_key = "sk-xyz"

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages = [
        {
            "role": "user",
            "content": "dame una lista de proyectos para crear con python"
        }
    ],
)

print(response)

stream

import openai

openai.api_key = "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"

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages = [
        {
            "role": "user",
            "content": "dame una lista de proyectos para crear con python"
        }
    ],
    stream=True
)

for chunk in response:
    print(chunk)

limpiando stream

import openai

openai.api_key = "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"

response_iterator = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages = [
        {
            "role": "user",
            "content": "dame una lista de proyectos para crear con python"
        }
    ],
    stream=True,
    max_tokens=150,
)

collected_messages = []

for chunk in response_iterator:
    chunk_message = chunk['choices'][0]['delta']  # extract the message
    collected_messages.append(chunk_message)  # save the message
    full_reply_content = ''.join([m.get('content', '') for m in collected_messages])
    print(full_reply_content)

    # clear the terminal
    print("\033[H\033[J", end="")

# print the time delay and text received
full_reply_content = ''.join([m.get('content', '') for m in collected_messages])
print(f"Full conversation received: {full_reply_content}")

añadiendo promtp

import openai

openai.api_key = ""

chat_history = []

while True:
    prompt = input("Enter a prompt: ")
    if prompt == "exit":
        break
    else:
        chat_history.append({"role": "user", "content": prompt})

        response_iterator = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages = chat_history,
            stream=True,
            max_tokens=150,
        )

        collected_messages = []

        for chunk in response_iterator:
            chunk_message = chunk['choices'][0]['delta']  # extract the message
            collected_messages.append(chunk_message)  # save the message
            full_reply_content = ''.join([m.get('content', '') for m in collected_messages])
            print(full_reply_content)

            # clear the terminal
            print("\033[H\033[J", end="")

        chat_history.append({"role": "assistant", "content": full_reply_content})
        # print the time delay and text received
        full_reply_content = ''.join([m.get('content', '') for m in collected_messages])
        print(f"GPT: {full_reply_content}")

mas recursos

https://github.com/openai/openai-python https://stackoverflow.com/questions/517970/how-to-clear-the-interpreter-console https://github.com/openai/openai-cookbook/blob/main/examples/How_to_stream_completions.ipynb