Infra
src.infra
Providers concretos de LLM e Embedding.
Re-exporta todas as implementacoes disponiveis.
SentenceTransformerEmbeddings(model_name: str = 'sentence-transformers/all-MiniLM-L6-v2', diretorio_modelos: str | Path = 'modelos')
Embeddings via sentence-transformers — local, sem Ollama.
Usa o modelo all-MiniLM-L6-v2 por padrao (~80MB).
O modelo e baixado automaticamente na primeira execucao para
o diretorio informado em diretorio_modelos, evitando redownload.
Inicializa o provider de embeddings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_name
|
str
|
Nome do modelo sentence-transformers ou caminho local. |
'sentence-transformers/all-MiniLM-L6-v2'
|
diretorio_modelos
|
str | Path
|
Diretorio onde o modelo e armazenado localmente. |
'modelos'
|
Source code in src/infra/embedding_providers.py
embed(texto: str) -> list[float]
Gera embedding para um texto.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
texto
|
str
|
Texto para gerar embedding. |
required |
Returns:
| Type | Description |
|---|---|
list[float]
|
Lista de floats representando o embedding. |
embed_batch(textos: list[str]) -> list[list[float]]
Gera embeddings para multiplos textos.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
textos
|
list[str]
|
Lista de textos para gerar embeddings. |
required |
Returns:
| Type | Description |
|---|---|
list[list[float]]
|
Lista de embeddings (lista de listas de floats). |
Source code in src/infra/embedding_providers.py
GroqProvider(api_key: str | None = None, model: str = 'llama-3.1-8b-instant')
LLM via Groq API — cloud, rapido, producao.
Usa o modelo Llama 3.1 8B Instant por padrao. Requer GROQ_API_KEY no ambiente ou passada explicitamente.
Inicializa o provider Groq.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
api_key
|
str | None
|
Chave da API Groq. Se None, le de GROQ_API_KEY. |
None
|
model
|
str
|
Nome do modelo a usar. |
'llama-3.1-8b-instant'
|
Source code in src/infra/llm_providers.py
completar(prompt: str, max_tokens: int = 10) -> str
Envia prompt ao Groq e retorna resposta texto.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
str
|
Texto do prompt para o LLM. |
required |
max_tokens
|
int
|
Maximo de tokens na resposta. |
10
|
Returns:
| Type | Description |
|---|---|
str
|
Texto da resposta do LLM. |
Source code in src/infra/llm_providers.py
OllamaProvider(model: str = 'qwen3.5:2b', num_predict: int = 10)
LLM via Ollama local — dev/testing, sem API key.
Usa qwen3.5:2b por padrao. Requer Ollama rodando localmente.
Inicializa o provider Ollama.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str
|
Nome do modelo Ollama a usar. |
'qwen3.5:2b'
|
num_predict
|
int
|
Maximo de tokens na resposta. |
10
|
Source code in src/infra/llm_providers.py
completar(prompt: str, max_tokens: int = 10) -> str
Envia prompt ao Ollama e retorna resposta texto.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
str
|
Texto do prompt para o LLM. |
required |
max_tokens
|
int
|
Ignorado (Ollama usa num_predict do construtor). |
10
|
Returns:
| Type | Description |
|---|---|
str
|
Texto da resposta do LLM. |
Source code in src/infra/llm_providers.py
src.infra.llm_providers
Providers concretos de LLM.
Implementacoes do protocolo LLMProvider para diferentes backends.
Example
GroqProvider(api_key: str | None = None, model: str = 'llama-3.1-8b-instant')
LLM via Groq API — cloud, rapido, producao.
Usa o modelo Llama 3.1 8B Instant por padrao. Requer GROQ_API_KEY no ambiente ou passada explicitamente.
Inicializa o provider Groq.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
api_key
|
str | None
|
Chave da API Groq. Se None, le de GROQ_API_KEY. |
None
|
model
|
str
|
Nome do modelo a usar. |
'llama-3.1-8b-instant'
|
Source code in src/infra/llm_providers.py
completar(prompt: str, max_tokens: int = 10) -> str
Envia prompt ao Groq e retorna resposta texto.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
str
|
Texto do prompt para o LLM. |
required |
max_tokens
|
int
|
Maximo de tokens na resposta. |
10
|
Returns:
| Type | Description |
|---|---|
str
|
Texto da resposta do LLM. |
Source code in src/infra/llm_providers.py
OllamaProvider(model: str = 'qwen3.5:2b', num_predict: int = 10)
LLM via Ollama local — dev/testing, sem API key.
Usa qwen3.5:2b por padrao. Requer Ollama rodando localmente.
Inicializa o provider Ollama.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str
|
Nome do modelo Ollama a usar. |
'qwen3.5:2b'
|
num_predict
|
int
|
Maximo de tokens na resposta. |
10
|
Source code in src/infra/llm_providers.py
completar(prompt: str, max_tokens: int = 10) -> str
Envia prompt ao Ollama e retorna resposta texto.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
str
|
Texto do prompt para o LLM. |
required |
max_tokens
|
int
|
Ignorado (Ollama usa num_predict do construtor). |
10
|
Returns:
| Type | Description |
|---|---|
str
|
Texto da resposta do LLM. |
Source code in src/infra/llm_providers.py
src.infra.embedding_providers
Providers concretos de Embedding.
Implementacoes do protocolo EmbeddingProvider para diferentes backends.
Example
SentenceTransformerEmbeddings(model_name: str = 'sentence-transformers/all-MiniLM-L6-v2', diretorio_modelos: str | Path = 'modelos')
Embeddings via sentence-transformers — local, sem Ollama.
Usa o modelo all-MiniLM-L6-v2 por padrao (~80MB).
O modelo e baixado automaticamente na primeira execucao para
o diretorio informado em diretorio_modelos, evitando redownload.
Inicializa o provider de embeddings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_name
|
str
|
Nome do modelo sentence-transformers ou caminho local. |
'sentence-transformers/all-MiniLM-L6-v2'
|
diretorio_modelos
|
str | Path
|
Diretorio onde o modelo e armazenado localmente. |
'modelos'
|
Source code in src/infra/embedding_providers.py
embed(texto: str) -> list[float]
Gera embedding para um texto.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
texto
|
str
|
Texto para gerar embedding. |
required |
Returns:
| Type | Description |
|---|---|
list[float]
|
Lista de floats representando o embedding. |
embed_batch(textos: list[str]) -> list[list[float]]
Gera embeddings para multiplos textos.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
textos
|
list[str]
|
Lista de textos para gerar embeddings. |
required |
Returns:
| Type | Description |
|---|---|
list[list[float]]
|
Lista de embeddings (lista de listas de floats). |