[6.x]: AI tool-calling check fails with a 400 on Anthropic, so Ask AI can't use Claude models

Cerrado Apto para principiantes
#20,266 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@riasvdv ya está trabajando en esto.

Desde el 3/11/2026.

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
php
Área
backend

Línea de trabajo

La comprobación que falla es la herramienta anónima de src/Ai/Agents/ToolCallingProbe.php, alrededor de la línea 34, que no tiene un método name(), así que laravel/ai recurre a un class_basename que Anthropic rechaza. Empieza leyendo ese archivo y compáralo con las otras herramientas de asistente de Craft que sí definen name(). Estará listo cuando la sonda declare un name() como get_verification_code y la comprobación de llamadas a herramientas pase con claude-sonnet-5-5.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug repo:cms
What happened?
Steps to reproduce
  1. Add an Anthropic provider to config/ai.php (the stock laravel/ai config has one) and set ANTHROPIC_API_KEY.
  2. In Settings → Extend → Connections, set the default text provider to anthropic and the model to claude-sonnet-5-5.
  3. Save.
Expected behavior

Craft confirms the model supports tool calling, and the AI assistant task becomes available.

Actual behavior

The check fails, and the AI assistant task is reported as unavailable:

Craft couldn’t check whether the claude-sonnet-5-5 model on the anthropic provider supports tool calling, which AI assistant needs: HTTP request returned status code 400: {"type":"error","error":{"type":"invalid_request_error","message":"tools.0.custom.name: String should match pattern '^[a (truncated...)

Cause

The test tool in src/Ai/Agents/ToolCallingProbe.php:34 is an anonymous class without a name() method. laravel/ai's ToolNameResolver falls back to class_basename(), which for an anonymous class gives a name like ToolCallingProbe.php:34$398. Anthropic rejects the ., : and $. Craft's other assistant tools all define name(), so only this check is affected.

Suggested fix
  • Add a name() method to the anonymous tool, e.g. returning get_verification_code.
Notes

With that method added locally, the tool name resolves to get_verification_code and the check passes with claude-sonnet-5-5. config/ai.php is the stock laravel/ai config, so the config isn't involved.

Craft CMS version

6.x-dev (395aae2)

PHP version

No response

Operating system and version

No response

Database type and version

No response

Image driver and version

No response

Installed plugins and versions
Lenguaje dominante
PHP
Estrellas
3.6k
Forks
712
Merge medio
13 h 20 min
PR fusionados (30 d)
357

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de craftcms/cms

Todos los issues de craftcms/cms

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.