🧠Inteligência em Código
🐍 Exemplos de Código2 min de leitura

Chatbot com Streaming usando OpenAI API

Crie um chatbot interativo no terminal com respostas em tempo real usando a API da OpenAI com streaming.

#openai#chatbot#streaming#python

O que vamos construir

Um chatbot no terminal que:

  • Mantém histórico da conversa
  • Mostra respostas em tempo real (streaming)
  • Tem personalidade configurável via system prompt

Código Completo

"""
Chatbot com Streaming - OpenAI API
Respostas aparecem em tempo real no terminal.
"""

import os
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

SYSTEM_PROMPT = """Você é um assistente especializado em Inteligência Artificial.
Responda sempre em português brasileiro, de forma clara e técnica.
Quando relevante, inclua exemplos de código Python."""

def chat(messages: list[dict]) -> str:
    """Envia mensagem com streaming e retorna resposta completa."""
    stream = client.chat.completions.create(
        model="gpt-4",
        messages=messages,
        stream=True,
        temperature=0.7,
        max_tokens=2000,
    )
    
    full_response = ""
    for chunk in stream:
        content = chunk.choices[0].delta.content
        if content:
            print(content, end="", flush=True)
            full_response += content
    
    print()  # nova linha após streaming
    return full_response

def main():
    print("🧠 Chatbot IA — digite 'sair' para encerrar")
    print("=" * 50)
    
    messages = [{"role": "system", "content": SYSTEM_PROMPT}]
    
    while True:
        try:
            user_input = input("\n👤 Você: ").strip()
        except (KeyboardInterrupt, EOFError):
            break
            
        if not user_input:
            continue
        if user_input.lower() in ("sair", "exit", "quit"):
            print("👋 Até mais!")
            break
        
        messages.append({"role": "user", "content": user_input})
        
        print("\n🤖 IA: ", end="")
        response = chat(messages)
        
        messages.append({"role": "assistant", "content": response})

if __name__ == "__main__":
    main()

Como rodar

# Instalar
pip install openai

# Configurar API key
export OPENAI_API_KEY="sk-..."

# Executar
python chatbot.py

Variação: Com Histórico Salvo

import json
from pathlib import Path

HISTORY_FILE = Path("chat_history.json")

def save_history(messages):
    HISTORY_FILE.write_text(json.dumps(messages, ensure_ascii=False, indent=2))

def load_history():
    if HISTORY_FILE.exists():
        return json.loads(HISTORY_FILE.read_text())
    return [{"role": "system", "content": SYSTEM_PROMPT}]

Adicione save_history(messages) após cada resposta para persistir o contexto entre sessões!