Integração do Ollama com Python: Exemplos de API REST e Cliente Python
Exemplos Específicos Utilizando Modelos de Linguagem Pensantes
Neste post, vamos explorar duas maneiras de conectar sua aplicação Python ao Ollama: 1. Via API REST HTTP; 2. Via a biblioteca oficial do Ollama para Python.
Vamos cobrir tanto chamadas de chat quanto de geração, e depois discutir como usar os “modelos de pensamento” de forma eficaz.
Ollama se tornou rapidamente uma das maneiras mais convenientes de executar grandes modelos de linguagem (LLMs) localmente. Com sua interface simples e suporte a modelos abertos populares como Llama 3, Mistral, Qwen2.5 e até variantes “de pensamento” como qwen3, é fácil incorporar capacidades de IA diretamente em seus projetos Python — sem depender de APIs de nuvem externas.
🧩 Pré-requisitos
Antes de começar, certifique-se de ter:
pip install requests ollama
Confirme se o Ollama está rodando executando:
ollama list
Você deve ver modelos disponíveis como llama3
, mistral
ou qwen3
.
⚙️ Opção 1: Usando a API REST do Ollama
A API REST é ideal quando você deseja máximo controle ou ao integrar com frameworks que já lidam com solicitações HTTP.
Exemplo 1: API de Chat
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "Você é um assistente Python."},
{"role": "user", "content": "Escreva uma função que inverta uma string."}
]
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
data = json.loads(line)
print(data.get("message", {}).get("content", ""), end="")
👉 A API REST do Ollama transmite respostas linha por linha (semelhante à API de transmissão da OpenAI). Você pode acumular o conteúdo ou exibir em tempo real para chatbots ou ferramentas CLI.
Exemplo 2: API de Geração
Se você não precisa de contexto de chat ou papéis, use o endpoint mais simples /api/generate
:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Explique a recursão em uma frase."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
Este endpoint é ótimo para tarefas de geração de texto único — resumos, trechos de código, etc.
🐍 Opção 2: Usando a Biblioteca Python do Ollama
O cliente Python do Ollama oferece uma interface mais limpa para desenvolvedores que preferem ficar totalmente em Python.
Exemplo 1: API de Chat
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "Você é um assistente de código."},
{"role": "user", "content": "Gere um script Python que lista todos os arquivos em um diretório."}
]
)
print(response['message']['content'])
Isso retorna a mensagem final como um dicionário. Se você quiser transmissão, pode iterar sobre o fluxo de chat:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Escreva um haicai sobre recursão."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Exemplo 2: API de Geração
import ollama
output = ollama.generate(
model="llama3.1",
prompt="Resuma o conceito de decoradores em Python."
)
print(output['response'])
Ou transmita o resultado:
stream = ollama.generate(
model="llama3.1",
prompt="Liste três vantagens de usar Python para projetos de IA.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Trabalhando com Modelos “de Pensamento”
O Ollama suporta modelos “de pensamento” como qwen3, projetados para mostrar seus passos intermediários de raciocínio. Esses modelos produzem saída estruturada, geralmente em um formato como:
<think>
Passos de raciocínio aqui...
</think>
Resposta final aqui.
Isso os torna úteis para:
- Depuração do raciocínio do modelo
- Pesquisa sobre interpretabilidade
- Construção de ferramentas que separam pensamento de saída
Exemplo: Usando um Modelo de Pensamento
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "Qual é a capital da Austrália?"}
]
)
content = response['message']['content']
# Opcionalmente, extraia a parte "de pensamento"
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)
print("🧠 Processo de pensamento:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Resposta final:\n", answer.strip())
Quando Usar Modelos de Pensamento
Caso de Uso | Modelo Recomendado | Por quê |
---|---|---|
Interpretabilidade / Depuração | qwen3 |
Visualiza traços de raciocínio |
Aplicações sensíveis ao desempenho | modo não pensante do qwen3 |
Mais rápido, menos verboso |
Educacional / Explicativo | qwen3 |
Mostra lógica passo a passo |
✅ Resumo
Tarefa | API REST | Cliente Python |
---|---|---|
Geração de texto simples | /api/generate |
ollama.generate() |
Chat conversacional | /api/chat |
ollama.chat() |
Suporte a transmissão | Sim | Sim |
Funciona com modelos de pensamento | Sim | Sim |
O design local-first do Ollama o torna ideal para aplicações de IA seguras, offline ou sensíveis à privacidade. Seja você está construindo um chatbot interativo ou um serviço de enriquecimento de dados em segundo plano, pode integrar LLMs perfeitamente ao seu fluxo de trabalho Python — com controle total sobre modelos, latência e dados.
Links úteis
- https://pypi.org/project/ollama/
- Guia rápido do Ollama
- Guia rápido do Python
- Instalar e configurar Ollama
- Controlando LLMs com Saída Estruturada: Ollama, Qwen3 & Python ou Go
- Comparação de saída estruturada entre provedores populares de LLM - OpenAI, Gemini, Anthropic, Mistral e AWS Bedrock
- Problemas de Saída Estruturada no Ollama GPT-OSS
- Como o Ollama Lida com Solicitações Paralelas
- Teste: Alocação de memória e agendamento de modelos na nova versão do Ollama - v0.12.1