Por que Python?
Python é a linguagem mais usada em IA por três motivos:
- Sintaxe simples → parece pseudocódigo
- Bibliotecas → milhões de pacotes prontos
- Comunidade → documentação e tutoriais em todo lugar
Mas mais importante: o ecossistema de IA vive em Python. Google Gemini, HuggingFace, Anthropic, Meta - todos lançam suas APIs primeiro em Python.
Fundamentos Teóricos
O que é uma API?
Definição formal: API (Application Programming Interface) é um conjunto de definições e protocolos que permite a comunicação entre sistemas de software, especificando os métodos e formatos de dados que podem ser usados para solicitar e trocar informações.
No contexto de LLMs: Uma API de LLM é uma interface HTTP que permite enviar prompts (requests) para um modelo hospedado remotamente e receber respostas (responses), sem precisar rodar o modelo localmente.
Arquitetura Cliente-Servidor
Conceitos Fundamentais
- Request (Requisição): Mensagem enviada do cliente para o servidor. Contém: endpoint URL, método (POST/GET), headers, body
- Response (Resposta): Mensagem retornada pelo servidor. Contém: status code, headers, body (dados)
- Endpoint: URL específica que recebe requisições (ex:
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent) - Autenticação: Verificação de identidade via API Key (token secreto)
- Rate Limiting: Limite de requisições por período (para evitar abuso)
O Mínimo que Você Precisa Saber de Python
Variáveis
# Tipos básicos nome = "Maria" # texto (string) idade = 25 # número inteiro (int) altura = 1.70 # número decimal (float) estudante = True # verdadeiro/falso (bool) # F-strings (formatação moderna) mensagem = f"{nome} tem {idade} anos" print(mensagem) # "Maria tem 25 anos"
Listas e Dicionários
# Lista: sequência ordenada frutas = ["maçã", "banana", "laranja"] frutas.append("uva") # adiciona no final frutas[0] # "maçã" (primeiro elemento) frutas[-1] # "uva" (último elemento) len(frutas) # 4 (tamanho) # Dicionário: pares chave-valor pessoa = { "nome": "João", "idade": 30, "cidade": "São Paulo" } pessoa["nome"] # "João" pessoa["idade"] = 31 # atualiza valor pessoa["profissao"] = "Dev" # adiciona nova chave
Funções
# Definição básica def saudar(nome): return f"Olá, {nome}!" # Chamada resultado = saudar("João") # "Olá, João!" # Com valor padrão def saudar(nome, saudacao="Olá"): return f"{saudacao}, {nome}!" saudar("Maria") # "Olá, Maria!" saudar("Maria", "Oi") # "Oi, Maria!" # Com retorno múltiplo def processar(texto): return len(texto), texto.upper() tamanho, maiusculo = processar("hello") # (5, "HELLO")
Tratamento de Exceções
# Try-except básico try: resultado = 10 / 0 except ZeroDivisionError: resultado = None print("Erro: divisão por zero") # Com múltiplos erros try: arquivo = open("nao_existe.txt") except FileNotFoundError: print("Arquivo não encontrado") except PermissionError: print("Sem permissão") except Exception as e: print(f"Erro inesperado: {e}") finally: print("Sempre executa")