Integrando o Ollama com Python: Exemplos de API REST e Cliente Python
+ Exemplos Específicos Utilizando LLMs de Pensamento
Neste post, vamos explorar duas formas de conectar seu aplicativo Python ao Ollama: 1. Via HTTP REST API; 2. Via a biblioteca oficial do Ollama para Python.
Vamos abordar tanto as chamadas chat quanto as generate, e depois discutir como usar efetivamente os “modelos de pensamento”.

Ollama tornou-se rapidamente uma das formas mais convenientes de executar modelos de linguagem grandes (LLMs) localmente. Para ver como o Ollama se compara com o vLLM, Docker Model Runner, LocalAI e provedores de nuvem — incluindo quando escolher cada um — veja LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared. 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 integrar capacidades de IA diretamente em seus projetos Python — sem depender de APIs de nuvem externas.
🧩 Pré-requisitos
Antes de mergulhar, certifique-se de ter:
pip install requests ollama
Confirme se o Ollama está em execução executando:
ollama list
Você deve ver modelos disponíveis como llama3, mistral ou qwen3.
⚙️ Opção 1: Usando a REST API do Ollama
A REST API é ideal quando você deseja o máximo de 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 de Python."},
{"role": "user", "content": "Escreva uma função que inverte 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 as respostas linha por linha (similar à API de streaming do OpenAI). Você pode acumular o conteúdo ou exibi-lo em tempo real para chatbots ou ferramentas CLI.
Exemplo 2: API de Geração
Se você não precisar de contexto de chat ou de papéis, use o endpoint mais simples /api/generate:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Explique 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 em uma única etapa — resumos, snippets de código, etc.
🐍 Opção 2: Usando a Biblioteca Python do Ollama
A biblioteca Python do Ollama oferece uma interface mais limpa para desenvolvedores que preferem ficar totalmente no 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": "Gerar 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 quiser streaming, você pode iterar sobre o stream de chat:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Escreva um haiku 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 stream 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 de raciocínio intermediários. Esses modelos produzem saída estruturada, frequentemente em um formato como:
🧠
Passos de raciocínio aqui...
</think>
Resposta final aqui.
Isso os torna úteis para:
- Depurar o raciocínio do modelo
- Pesquisa sobre interpretabilidade
- Construir ferramentas que separem 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 extrair a parte "pensamento"
import re
thinking = re.findall(r"🧠(.*?)✅", content, re.DOTALL)
answer = re.sub(r"🧠.*?✅", "", 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 |
Visualizar rastreamento de raciocínio |
| Aplicações sensíveis a desempenho | qwen3 modo não-pensamento |
Mais rápido, menos verboso |
| Educativo / Explicativo | qwen3 |
Mostra lógica passo a passo |
✅ Resumo
| Tarefa | REST API | Cliente Python |
|---|---|---|
| Geração de texto simples | /api/generate |
ollama.generate() |
| Chat conversacional | /api/chat |
ollama.chat() |
| Suporte a streaming | Sim | Sim |
| Funciona com modelos de pensamento | Sim | Sim |
O design local-first do Ollama torna-o ideal para aplicações de IA seguras, offline ou sensíveis à privacidade. Seja você construindo um chatbot interativo ou um serviço de enriquecimento de dados em segundo plano, você pode integrar LLMs de forma seamles no seu fluxo de trabalho Python — com controle total sobre modelos, latência e dados. Para uma comparação mais ampla do Ollama com outras infraestruturas locais e de nuvem LLM, consulte nosso LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.
Links Úteis
- https://pypi.org/project/ollama/
- Ollama cheatsheet
- Python Cheatsheet
- Instale e configure Ollama
- Limitando 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 no novo Ollama — v0.12.1