Ir para o conteúdo

Config

src.config

Configuração do Pede AI.

Pacote centralizado para acesso a prompts, cardápio e configurações do tenant.

Example
from src.config import get_prompt, get_cardapio, get_tenant_nome

prompt = get_prompt('classificador_intencoes')
cardapio = get_cardapio()
nome = get_tenant_nome()

get_cardapio() -> dict

Retorna o cardápio completo.

Returns:

Type Description
dict

Dicionário com todos os itens, remoções e observações.

Example
cardapio = get_cardapio()
len(cardapio['itens'])  # 7
Source code in src/config/cardapio.py
def get_cardapio() -> dict:
    """
    Retorna o cardápio completo.

    Returns:
        Dicionário com todos os itens, remoções e observações.

    Example:
        ```python
        cardapio = get_cardapio()
        len(cardapio['itens'])  # 7
        ```
    """
    return _CardapioCache.carregar_cardapio()

get_item_por_id(item_id: str) -> dict | None

Busca um item do cardápio pelo ID.

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
dict | None

Dados do item ou None se não encontrado.

Example
item = get_item_por_id('lanche_001')
# {'id': 'lanche_001', 'nome': 'Hambúrguer', ...}
Source code in src/config/cardapio.py
def get_item_por_id(item_id: str) -> dict | None:
    """
    Busca um item do cardápio pelo ID.

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Dados do item ou None se não encontrado.

    Example:
        ```python
        item = get_item_por_id('lanche_001')
        # {'id': 'lanche_001', 'nome': 'Hambúrguer', ...}
        ```
    """
    return _CardapioCache.indexar_itens_por_id().get(item_id)

get_variantes(item_id: str) -> list[str]

Retorna lista de opções de variante de um item.

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
list[str]

Lista de nomes de variantes (ex: ['simples', 'duplo', 'triplo']).

Example
get_variantes('lanche_001')
['simples', 'duplo', 'triplo']
Source code in src/config/cardapio.py
def get_variantes(item_id: str) -> list[str]:
    """
    Retorna lista de opções de variante de um item.

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Lista de nomes de variantes (ex: ['simples', 'duplo', 'triplo']).

    Example:
        ```python
        get_variantes('lanche_001')
        ['simples', 'duplo', 'triplo']
        ```
    """
    item_data = get_item_por_id(item_id)
    if item_data is not None:
        return [v['opcao'] for v in item_data.get('variantes', [])]
    return []

get_preco_item(item_id: str) -> int | None

Retorna preço base do item (sem variante).

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
int | None

Preço em centavos ou None se não existir.

Example
get_preco_item('lanche_001')
1500
Source code in src/config/cardapio.py
def get_preco_item(item_id: str) -> int | None:
    """
    Retorna preço base do item (sem variante).

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Preço em centavos ou None se não existir.

    Example:
        ```python
        get_preco_item('lanche_001')
        1500
        ```
    """
    item = get_item_por_id(item_id)
    return item.get('preco') if item else None

get_prompt(nome: str) -> str

Retorna um prompt por nome.

Parameters:

Name Type Description Default
nome str

Nome do prompt (ex: 'classificador_intencoes').

required

Returns:

Type Description
str

O conteúdo do prompt.

Raises:

Type Description
KeyError

Se o prompt não existir.

Example
from src.config import get_prompt

prompt = get_prompt('classificador_intencoes')
Source code in src/config/prompts.py
def get_prompt(nome: str) -> str:
    """
    Retorna um prompt por nome.

    Args:
        nome: Nome do prompt (ex: 'classificador_intencoes').

    Returns:
        O conteúdo do prompt.

    Raises:
        KeyError: Se o prompt não existir.

    Example:
        ```python
        from src.config import get_prompt

        prompt = get_prompt('classificador_intencoes')
        ```
    """
    return _PromptsCache.carregar_prompts()[nome]['prompt']

get_roteador_config() -> RoteadorConfig

Retorna configuracao do roteador (cached).

Returns:

Type Description
RoteadorConfig

RoteadorConfig com todos os parametros carregados do YAML.

Example
config = get_roteador_config()
config.rag_forte_threshold
0.95
Source code in src/config/roteador_config.py
def get_roteador_config() -> RoteadorConfig:
    """Retorna configuracao do roteador (cached).

    Returns:
        RoteadorConfig com todos os parametros carregados do YAML.

    Example:
        ```python
        config = get_roteador_config()
        config.rag_forte_threshold
        0.95
        ```
    """
    return _RoteadorCache.carregar()

get_intencoes_validas() -> list[str]

Retorna lista de intenções válidas.

Source code in src/config/prompts.py
def get_intencoes_validas() -> list[str]:
    """Retorna lista de intenções válidas."""
    return _PromptsCache.carregar_prompts()['classificador_intencoes'][
        'intencoes_validas'
    ]

src.config.cardapio

Módulo de Cardápio do Pede AI.

Fornece acesso centralizado aos dados do cardápio.

Example
from src.config import get_cardapio, get_item_por_id, get_variantes

cardapio = get_cardapio()
item = get_item_por_id('lanche_001')
variantes = get_variantes('lanche_001')

get_cardapio() -> dict

Retorna o cardápio completo.

Returns:

Type Description
dict

Dicionário com todos os itens, remoções e observações.

Example
cardapio = get_cardapio()
len(cardapio['itens'])  # 7
Source code in src/config/cardapio.py
def get_cardapio() -> dict:
    """
    Retorna o cardápio completo.

    Returns:
        Dicionário com todos os itens, remoções e observações.

    Example:
        ```python
        cardapio = get_cardapio()
        len(cardapio['itens'])  # 7
        ```
    """
    return _CardapioCache.carregar_cardapio()

get_item_por_id(item_id: str) -> dict | None

Busca um item do cardápio pelo ID.

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
dict | None

Dados do item ou None se não encontrado.

Example
item = get_item_por_id('lanche_001')
# {'id': 'lanche_001', 'nome': 'Hambúrguer', ...}
Source code in src/config/cardapio.py
def get_item_por_id(item_id: str) -> dict | None:
    """
    Busca um item do cardápio pelo ID.

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Dados do item ou None se não encontrado.

    Example:
        ```python
        item = get_item_por_id('lanche_001')
        # {'id': 'lanche_001', 'nome': 'Hambúrguer', ...}
        ```
    """
    return _CardapioCache.indexar_itens_por_id().get(item_id)

get_itens_por_categoria(categoria: str) -> list[dict]

Retorna todos os itens de uma categoria.

Parameters:

Name Type Description Default
categoria str

Nome da categoria (ex: 'lanche', 'bebida', 'acompanhamento').

required

Returns:

Type Description
list[dict]

Lista de itens da categoria.

Example
itens = get_itens_por_categoria('lanche')
# [{'id': 'lanche_002', 'nome': 'X-Salada', ...}, ...]
Source code in src/config/cardapio.py
def get_itens_por_categoria(categoria: str) -> list[dict]:
    """
    Retorna todos os itens de uma categoria.

    Args:
        categoria: Nome da categoria (ex: 'lanche', 'bebida', 'acompanhamento').

    Returns:
        Lista de itens da categoria.

    Example:
        ```python
        itens = get_itens_por_categoria('lanche')
        # [{'id': 'lanche_002', 'nome': 'X-Salada', ...}, ...]
        ```
    """
    cardapio = _CardapioCache.carregar_cardapio()
    return [item for item in cardapio['itens'] if item['categoria'] == categoria]

get_remocoes_genericas() -> list[str]

Retorna lista de palavras de remoção genéricas.

Returns:

Type Description
list[str]

Lista de palavras como 'sem', 'tira', 'retira', etc.

Source code in src/config/cardapio.py
def get_remocoes_genericas() -> list[str]:
    """
    Retorna lista de palavras de remoção genéricas.

    Returns:
        Lista de palavras como 'sem', 'tira', 'retira', etc.
    """
    return _CardapioCache.carregar_cardapio()['remocoes_genericas']

get_observacoes_genericas() -> list[str]

Retorna lista de observações genéricas.

Returns:

Type Description
list[str]

Lista de observações como 'bem passado', 'ao ponto', etc.

Source code in src/config/cardapio.py
def get_observacoes_genericas() -> list[str]:
    """
    Retorna lista de observações genéricas.

    Returns:
        Lista de observações como 'bem passado', 'ao ponto', etc.
    """
    return _CardapioCache.carregar_cardapio()['observacoes_genericas']

get_variantes(item_id: str) -> list[str]

Retorna lista de opções de variante de um item.

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
list[str]

Lista de nomes de variantes (ex: ['simples', 'duplo', 'triplo']).

Example
get_variantes('lanche_001')
['simples', 'duplo', 'triplo']
Source code in src/config/cardapio.py
def get_variantes(item_id: str) -> list[str]:
    """
    Retorna lista de opções de variante de um item.

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Lista de nomes de variantes (ex: ['simples', 'duplo', 'triplo']).

    Example:
        ```python
        get_variantes('lanche_001')
        ['simples', 'duplo', 'triplo']
        ```
    """
    item_data = get_item_por_id(item_id)
    if item_data is not None:
        return [v['opcao'] for v in item_data.get('variantes', [])]
    return []

get_preco_item(item_id: str) -> int | None

Retorna preço base do item (sem variante).

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
int | None

Preço em centavos ou None se não existir.

Example
get_preco_item('lanche_001')
1500
Source code in src/config/cardapio.py
def get_preco_item(item_id: str) -> int | None:
    """
    Retorna preço base do item (sem variante).

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Preço em centavos ou None se não existir.

    Example:
        ```python
        get_preco_item('lanche_001')
        1500
        ```
    """
    item = get_item_por_id(item_id)
    return item.get('preco') if item else None

get_nome_item(item_id: str) -> str | None

Retorna nome do item.

Parameters:

Name Type Description Default
item_id str

ID do item (ex: 'lanche_001').

required

Returns:

Type Description
str | None

Nome do item ou None se não existir.

Example
get_nome_item('lanche_001')
'Hamburguer'
Source code in src/config/cardapio.py
def get_nome_item(item_id: str) -> str | None:
    """
    Retorna nome do item.

    Args:
        item_id: ID do item (ex: 'lanche_001').

    Returns:
        Nome do item ou None se não existir.

    Example:
        ```python
        get_nome_item('lanche_001')
        'Hamburguer'
        ```
    """
    item = get_item_por_id(item_id)
    return item.get('nome') if item else None

src.config.prompts

Configuração de Prompts e Tenant do Pede AI.

Fornece acesso centralizado a prompts, intenções válidas e informações do tenant.

Example
from src.config import get_prompt, get_intencoes_validas, get_tenant_nome

prompt = get_prompt('classificador_intencoes')
nome = get_tenant_nome()

get_prompt(nome: str) -> str

Retorna um prompt por nome.

Parameters:

Name Type Description Default
nome str

Nome do prompt (ex: 'classificador_intencoes').

required

Returns:

Type Description
str

O conteúdo do prompt.

Raises:

Type Description
KeyError

Se o prompt não existir.

Example
from src.config import get_prompt

prompt = get_prompt('classificador_intencoes')
Source code in src/config/prompts.py
def get_prompt(nome: str) -> str:
    """
    Retorna um prompt por nome.

    Args:
        nome: Nome do prompt (ex: 'classificador_intencoes').

    Returns:
        O conteúdo do prompt.

    Raises:
        KeyError: Se o prompt não existir.

    Example:
        ```python
        from src.config import get_prompt

        prompt = get_prompt('classificador_intencoes')
        ```
    """
    return _PromptsCache.carregar_prompts()[nome]['prompt']

get_intencoes_validas() -> list[str]

Retorna lista de intenções válidas.

Source code in src/config/prompts.py
def get_intencoes_validas() -> list[str]:
    """Retorna lista de intenções válidas."""
    return _PromptsCache.carregar_prompts()['classificador_intencoes'][
        'intencoes_validas'
    ]

get_tenant_info() -> dict[str, str]

Retorna informações do tenant (restaurante).

Returns:

Type Description
dict[str, str]

Dicionário com tenant_id e tenant_nome.

Example
get_tenant_info()
{'tenant_id': 'restaurante_teste', 'tenant_nome': 'Lanchonete do Zé'}
Source code in src/config/prompts.py
def get_tenant_info() -> dict[str, str]:
    """
    Retorna informações do tenant (restaurante).

    Returns:
        Dicionário com tenant_id e tenant_nome.

    Example:
        ```python
        get_tenant_info()
        {'tenant_id': 'restaurante_teste', 'tenant_nome': 'Lanchonete do Zé'}
        ```
    """
    cardapio = get_cardapio()
    return {
        'tenant_id': cardapio['tenant_id'],
        'tenant_nome': cardapio['tenant_nome'],
    }

get_tenant_id() -> str

Retorna o ID do tenant.

Source code in src/config/prompts.py
def get_tenant_id() -> str:
    """Retorna o ID do tenant."""
    return get_cardapio()['tenant_id']

get_tenant_nome() -> str

Retorna o nome do tenant (restaurante).

Source code in src/config/prompts.py
def get_tenant_nome() -> str:
    """Retorna o nome do tenant (restaurante)."""
    return get_cardapio()['tenant_nome']

src.config.roteador_config

Loader de configuracao do roteador de intencoes.

Carrega config/roteador.yml e fornece acesso via dataclass imutavel.

Example
from src.config import get_roteador_config

config = get_roteador_config()
config.rag_forte_threshold  # 0.95

RoteadorConfig(rag_forte_threshold: float, rag_fraco_threshold: float, min_similarity: float, max_chars: int, top_k: int, alta_prioridade: frozenset[str], llm_provider: str, llm_model: str, embedding_model: str, embedding_cache_path: Path, exemplos_path: Path) dataclass

Configuracao imutavel do classificador de intencoes.

Attributes:

Name Type Description
rag_forte_threshold float

Se confianca >= threshold, usa RAG direto sem LLM.

rag_fraco_threshold float

Se confianca < threshold, usa fallback LLM puro.

min_similarity float

Similaridade minima para incluir exemplo na votacao.

max_chars int

Truncamento maximo da mensagem.

top_k int

Numero de exemplos similares a buscar.

alta_prioridade frozenset[str]

Intents de alta prioridade (acao > conversacao).

llm_provider str

Nome do provider LLM ('groq' ou 'ollama').

llm_model str

Nome do modelo LLM a usar.

embedding_model str

Nome do modelo de embedding.

embedding_cache_path Path

Caminho do cache de embeddings.

exemplos_path Path

Caminho do arquivo de exemplos.

get_roteador_config() -> RoteadorConfig

Retorna configuracao do roteador (cached).

Returns:

Type Description
RoteadorConfig

RoteadorConfig com todos os parametros carregados do YAML.

Example
config = get_roteador_config()
config.rag_forte_threshold
0.95
Source code in src/config/roteador_config.py
def get_roteador_config() -> RoteadorConfig:
    """Retorna configuracao do roteador (cached).

    Returns:
        RoteadorConfig com todos os parametros carregados do YAML.

    Example:
        ```python
        config = get_roteador_config()
        config.rag_forte_threshold
        0.95
        ```
    """
    return _RoteadorCache.carregar()