Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

RestApiTool raises uncaught KeyError when a required path param is omitted

Aberta Para iniciantes
#7,282 2 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 5 dias

@llalitkumarrr já está trabalhando nisso.

Desde 28/9/2026.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
78/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
openapi, python
Domínio
api, backend

Direção de pesquisa

Comece em google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py, concentrando-se em _prepare_request_params e RestApiTool.call. Reproduza o caso de user_id ausente com a configuração de testes unitários offline e rastreie a falha na formatação do caminho. Está concluído quando parâmetros de caminho obrigatórios omitidos produzem um erro de ferramenta estruturado e que permita nova tentativa, em vez de um KeyError não tratado ou de uma invocação do agente abortada.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

tools
Description

FunctionTool returns {"error": ...} when mandatory args are missing so the model can retry.

RestApiTool maps filled args into path_params, then does self.endpoint.path.format(**path_params) in _prepare_request_params. An omitted required path parameter leaves a template key unset → KeyError (original OpenAPI name, e.g. 'userId').

RestApiTool.call only catches TimeoutException / HTTPStatusError, so the agent invocation aborts instead of returning a retryable tool error.

Location: google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py

Environment
  • google-adk==2.9.2
  • Offline unit repro (no live HTTP)
Repro
# RestApiTool for path /users/{userId} with required path param userId / py_name user_id
# Call with args {} (or missing user_id)
# → KeyError: 'userId'
Observed (google-adk==2.9.2)
  • path /users/{userId}, args {} → KeyError: 'userId'
  • py_names for the param include user_id (declaration expects snake_case), but missing value still crashes via format
Expected

Missing required path params should return a structured tool error (mirror FunctionTool._get_mandatory_args) so the model can retry, not abort the agent run.

Suggested fix

Before format, verify every {placeholder} in the path is present; on miss return {"error": "missing path parameter …"}. Optionally catch KeyError/ValueError from _prepare_request_params in call.

Notes

Nearby RestApiTool crashes #7164 (header type) and #7206 (non-UTF-8 body) are different sites. Happy to open a PR.

Linguagem predominante
Python
Estrelas
21.6k
Forks
4k
Merge médio
12h 6min
PRs com merge (30d)
4

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de google/adk-python

Todas as issues de google/adk-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.