You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
5.6 KiB
Python
124 lines
5.6 KiB
Python
from app.db.database import SessionLocal
|
|
from app.repositories.tool_repository import ToolRepository
|
|
|
|
|
|
def get_tools_definitions():
|
|
return [
|
|
{
|
|
"name": "consultar_estoque",
|
|
"description": "Use esta ferramenta para consultar veículos disponíveis no estoque até um preço máximo informado pelo cliente, opcionalmente filtrando por categoria (Hatch, Sedan, SUV, etc.). Ideal quando o cliente quer saber quais carros cabem no orçamento ou comparar opções dentro de uma faixa de preço.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"preco_max": {
|
|
"type": "number",
|
|
"description": "Preço máximo do veículo em reais (BRL)."
|
|
},
|
|
"categoria": {
|
|
"type": "string",
|
|
"description": "Categoria do veículo, por exemplo: Hatch, Sedan, SUV. Opcional."
|
|
},
|
|
},
|
|
"required": ["preco_max"],
|
|
},
|
|
},
|
|
{
|
|
"name": "validar_cliente_venda",
|
|
"description": "Use esta ferramenta quando precisar avaliar se o cliente pode financiar um veículo específico. Ela recebe o CPF e o valor do veículo, consulta um score simulado e retorna se o cliente está aprovado ou reprovado para a compra, juntamente com o score e um limite de crédito estimado.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpf": {
|
|
"type": "string",
|
|
"description": "CPF do cliente, com ou sem formatação (apenas dígitos também é aceito)."
|
|
},
|
|
"valor_veiculo": {
|
|
"type": "number",
|
|
"description": "Valor do veículo em reais (BRL) que o cliente deseja comprar."
|
|
},
|
|
},
|
|
"required": ["cpf", "valor_veiculo"],
|
|
},
|
|
},
|
|
{
|
|
"name": "avaliar_veiculo_troca",
|
|
"description": "Use esta ferramenta quando o cliente quiser saber quanto o carro dele vale como entrada em uma negociação. Ela recebe modelo, ano e quilometragem do veículo atual e devolve um valor estimado de avaliação para troca, já considerando depreciação por ano e quilometragem.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"modelo": {
|
|
"type": "string",
|
|
"description": "Modelo do veículo que o cliente deseja oferecer na troca (por exemplo, 'Toyota Corolla')."
|
|
},
|
|
"ano": {
|
|
"type": "integer",
|
|
"description": "Ano de fabricação do veículo do cliente."
|
|
},
|
|
"km": {
|
|
"type": "integer",
|
|
"description": "Quilometragem atual do veículo do cliente."
|
|
},
|
|
},
|
|
"required": ["modelo", "ano", "km"],
|
|
},
|
|
},
|
|
{
|
|
"name": "agendar_revisao",
|
|
"description": "Use esta ferramenta quando o cliente quiser marcar uma revisão ou manutenção para o veículo. Ela recebe a placa e a data/hora desejada, cria um agendamento simulado e retorna um identificador, além do status do agendamento.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"placa": {
|
|
"type": "string",
|
|
"description": "Placa do veículo que será levado para revisão."
|
|
},
|
|
"data_hora": {
|
|
"type": "string",
|
|
"description": "Data e hora desejada para a revisão, em formato ISO 8601 (por exemplo, '2026-03-10T09:00:00-03:00')."
|
|
},
|
|
},
|
|
"required": ["placa", "data_hora"],
|
|
},
|
|
},
|
|
{
|
|
"name": "cancelar_pedido",
|
|
"description": "Use esta ferramenta quando o cliente solicitar o cancelamento de um pedido já registrado. Ela recebe o número do pedido e o motivo do cancelamento, atualiza o status para 'Cancelado' e retorna os detalhes do cancelamento para que você explique o resultado ao cliente.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"numero_pedido": {
|
|
"type": "string",
|
|
"description": "Número do pedido que o cliente deseja cancelar."
|
|
},
|
|
"motivo": {
|
|
"type": "string",
|
|
"description": "Motivo do cancelamento informado pelo cliente (por exemplo, atraso, mudança de planos, condição de pagamento, etc.)."
|
|
},
|
|
},
|
|
"required": ["numero_pedido", "motivo"],
|
|
},
|
|
},
|
|
]
|
|
|
|
|
|
def seed_tools():
|
|
db = SessionLocal()
|
|
try:
|
|
repo = ToolRepository(db)
|
|
existing = repo.get_all()
|
|
existing_names = {t.name for t in existing}
|
|
for tool_def in get_tools_definitions():
|
|
if tool_def["name"] in existing_names:
|
|
continue
|
|
repo.create(
|
|
name=tool_def["name"],
|
|
description=tool_def["description"],
|
|
parameters=tool_def["parameters"],
|
|
)
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
seed_tools()
|