LLM - Aplicação Direta

Neste workshop, utilizaremos duas bibliotecas Python fundamentais:

  1. openai: Esta é a biblioteca oficial da OpenAI para interagir com seus modelos (como GPT-4, GPT-4o-mini, etc.). Ela permite enviar prompts para os modelos e receber as respostas geradas. Usaremos esta biblioteca para as aplicações diretas de LLMs.

  2. langchain: Uma poderosa estrutura (framework) para desenvolver aplicações impulsionadas por modelos de linguagem. O LangChain simplifica a orquestração de LLMs, permitindo criar cadeias de ações, integrar ferramentas externas (como busca na web), gerenciar memória em conversas e implementar técnicas avançadas como RAG (Retrieval-Augmented Generation) e agentes. Usaremos LangChain para as seções sobre tipos de prompt (integrando com modelos OpenAI), agentes (tools e memory) e RAG.

Parâmetros no consumo da API OpenAI

Ao chamar a API de chat completions com a biblioteca openai, alguns parâmetros controlam o comportamento e a saída do modelo:

  • model*: modelo que será utilizado (ex.: "gpt-4o-mini", "gpt-4.1").
  • messages*: lista de mensagens com os papéis (system, user, assistant), definindo o contexto e a interação.
  • temperature: controla a aleatoriedade da resposta.
    • 0.0 → respostas mais previsíveis e determinísticas.
    • 1.0 → respostas mais criativas e variadas.
  • max_tokens: número máximo de tokens (palavras + partes de palavras) que a resposta pode conter.
  • top_p: amostragem por núcleo, alternativa ao temperature para controlar diversidade.
  • stop: lista de sequências que interrompem a geração ao serem encontradas.
  • tools: funções ou recursos adicionais que o modelo pode chamar.
  • response_format: define o formato da resposta, como JSON estruturado.

Nota: parâmetros marcados com * são obrigatórios para o funcionamento da chamada.

Papéis nas mensagens (system, user, assistant)

Ao enviar mensagens para a API, usamos uma lista onde cada item representa um papel. Esses papéis ajudam o modelo a entender quem está falando e qual é o contexto.

  • system Define o comportamento e a personalidade do modelo. Ex.: "Você é um assistente especializado em finanças, responda de forma clara e objetiva." -> Impacta diretamente o tom, a área de conhecimento e o estilo das respostas.

  • user Representa o que o usuário está perguntando ou solicitando. -> É a entrada principal que o modelo deve responder.

  • assistant Usado para incluir respostas anteriores do próprio modelo, mantendo contexto em conversas. -> Permite que a conversa seja contínua, considerando interações passadas.

Importante: - O system define o tom e permanece como “regra” durante toda a conversa. - A ordem das mensagens influencia o contexto e, portanto, a resposta. - Ao criar diálogos, inclua sempre as mensagens anteriores para que o modelo mantenha coerência.

import os
api_key = os.environ.get('OPENAI_API_KEY')
from openai import OpenAI

client = OpenAI(api_key=api_key)

resposta = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "Você é um assistente útil."},
        {"role": "user", "content": "Explique resumidamente o que é uma LLM."}
    ],
    temperature=0.7
)

print(resposta.choices[0].message.content)