Gemini 的 Function Calling (函数调用/工具调用) 功能时,向 API 提交的函数声明(Schema)格式不正确,导致gemini所有模型调用失败,provider可用性全部通过。
[2026-03-11 15:13:01.863] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:268]: Chat Model google_gemini/gemini-3-flash-preview request error: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} Traceback (most recent call last): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 243, in _iter_llm_responses_with_fallback async for resp in self._iter_llm_responses(include_model=idx == 0): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 220, in _iter_llm_responses yield await self.provider.text_chat(**payload) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 769, in text_chat if await self._handle_api_error(e, keys): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 128, in _handle_api_error raise e File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 767, in text_chat return await self._query(payloads, func_tool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 542, in _query result = await self.client.models.generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 7542, in generate_content return await self._generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 6330, in _generate_content response = await self._api_client.async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1447, in async_request result = await self._async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1380, in _async_request return await self._async_retry( # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 112, in __call__ do = await self.iter(retry_state=retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 157, in iter result = await action(retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 111, in inner return call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 413, in exc_check raise retry_exc.reraise() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 184, in reraise raise self.last_attempt.result() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 116, in __call__ result = await fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1325, in _async_request_once await errors.APIError.raise_for_async_response(response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 216, in raise_for_async_response await cls.raise_error_async(status_code, response_json, response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 238, in raise_error_async raise ClientError(status_code, response_json, response) google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} [2026-03-11 15:13:01.875] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:235]: Switched from google_gemini/gemini-3-flash-preview to fallback chat provider: google_gemini/gemini-3.1-flash-lite-preview [2026-03-11 15:13:02.024] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:268]: Chat Model google_gemini/gemini-3.1-flash-lite-preview request error: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} Traceback (most recent call last): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 243, in _iter_llm_responses_with_fallback async for resp in self._iter_llm_responses(include_model=idx == 0): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 220, in _iter_llm_responses yield await self.provider.text_chat(**payload) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 769, in text_chat if await self._handle_api_error(e, keys): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 128, in _handle_api_error raise e File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 767, in text_chat return await self._query(payloads, func_tool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 542, in _query result = await self.client.models.generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 7542, in generate_content return await self._generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 6330, in _generate_content response = await self._api_client.async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1447, in async_request result = await self._async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1380, in _async_request return await self._async_retry( # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 112, in __call__ do = await self.iter(retry_state=retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 157, in iter result = await action(retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 111, in inner return call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 413, in exc_check raise retry_exc.reraise() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 184, in reraise raise self.last_attempt.result() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 116, in __call__ result = await fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1325, in _async_request_once await errors.APIError.raise_for_async_response(response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 216, in raise_for_async_response await cls.raise_error_async(status_code, response_json, response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 238, in raise_error_async raise ClientError(status_code, response_json, response) google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} [2026-03-11 15:13:02.036] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:235]: Switched from google_gemini/gemini-3.1-flash-lite-preview to fallback chat provider: google_gemini/gemini-2.5-flash-lite-preview-09-2025 [2026-03-11 15:13:02.167] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:268]: Chat Model google_gemini/gemini-2.5-flash-lite-preview-09-2025 request error: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} Traceback (most recent call last): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 243, in _iter_llm_responses_with_fallback async for resp in self._iter_llm_responses(include_model=idx == 0): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 220, in _iter_llm_responses yield await self.provider.text_chat(**payload) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 769, in text_chat if await self._handle_api_error(e, keys): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 128, in _handle_api_error raise e File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 767, in text_chat return await self._query(payloads, func_tool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 542, in _query result = await self.client.models.generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 7542, in generate_content return await self._generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 6330, in _generate_content response = await self._api_client.async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1447, in async_request result = await self._async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1380, in _async_request return await self._async_retry( # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 112, in __call__ do = await self.iter(retry_state=retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 157, in iter result = await action(retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 111, in inner return call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 413, in exc_check raise retry_exc.reraise() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 184, in reraise raise self.last_attempt.result() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 116, in __call__ result = await fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1325, in _async_request_once await errors.APIError.raise_for_async_response(response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 216, in raise_for_async_response await cls.raise_error_async(status_code, response_json, response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 238, in raise_error_async raise ClientError(status_code, response_json, response) google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} [2026-03-11 15:13:02.178] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:235]: Switched from google_gemini/gemini-2.5-flash-lite-preview-09-2025 to fallback chat provider: google_gemini/gemini-3.1-pro-preview [2026-03-11 15:13:02.313] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:268]: Chat Model google_gemini/gemini-3.1-pro-preview request error: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} Traceback (most recent call last): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 243, in _iter_llm_responses_with_fallback async for resp in self._iter_llm_responses(include_model=idx == 0): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 220, in _iter_llm_responses yield await self.provider.text_chat(**payload) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 769, in text_chat if await self._handle_api_error(e, keys): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 128, in _handle_api_error raise e File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 767, in text_chat return await self._query(payloads, func_tool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 542, in _query result = await self.client.models.generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 7542, in generate_content return await self._generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 6330, in _generate_content response = await self._api_client.async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1447, in async_request result = await self._async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1380, in _async_request return await self._async_retry( # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 112, in __call__ do = await self.iter(retry_state=retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 157, in iter result = await action(retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 111, in inner return call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 413, in exc_check raise retry_exc.reraise() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 184, in reraise raise self.last_attempt.result() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 116, in __call__ result = await fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1325, in _async_request_once await errors.APIError.raise_for_async_response(response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 216, in raise_for_async_response await cls.raise_error_async(status_code, response_json, response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 238, in raise_error_async raise ClientError(status_code, response_json, response) google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} [2026-03-11 15:13:02.325] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:235]: Switched from google_gemini/gemini-3.1-pro-preview to fallback chat provider: google_gemini/gemini-3-pro-preview [2026-03-11 15:13:02.471] [Core] [WARN] [v4.19.5] [runners.tool_loop_agent_runner:268]: Chat Model google_gemini/gemini-3-pro-preview request error: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}} Traceback (most recent call last): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 243, in _iter_llm_responses_with_fallback async for resp in self._iter_llm_responses(include_model=idx == 0): File "/AstrBot/astrbot/core/agent/runners/tool_loop_agent_runner.py", line 220, in _iter_llm_responses yield await self.provider.text_chat(**payload) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 769, in text_chat if await self._handle_api_error(e, keys): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 128, in _handle_api_error raise e File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 767, in text_chat return await self._query(payloads, func_tool) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/AstrBot/astrbot/core/provider/sources/gemini_source.py", line 542, in _query result = await self.client.models.generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 7542, in generate_content return await self._generate_content( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/models.py", line 6330, in _generate_content response = await self._api_client.async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1447, in async_request result = await self._async_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1380, in _async_request return await self._async_retry( # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 112, in __call__ do = await self.iter(retry_state=retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 157, in iter result = await action(retry_state) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 111, in inner return call(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 413, in exc_check raise retry_exc.reraise() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 184, in reraise raise self.last_attempt.result() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result raise self._exception File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 116, in __call__ result = await fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/google/genai/_api_client.py", line 1325, in _async_request_once await errors.APIError.raise_for_async_response(response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 216, in raise_for_async_response await cls.raise_error_async(status_code, response_json, response) File "/usr/local/lib/python3.12/site-packages/google/genai/errors.py", line 238, in raise_error_async raise ClientError(status_code, response_json, response) google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': '* GenerateContentRequest.tools[0].function_declarations[9].parameters.properties[source_uuids].items: missing field.\n', 'status': 'INVALID_ARGUMENT'}}
What happened / 发生了什么
启用原生代码执行器可以解决这个问题,是升级到新版本之后出现的这个问题。
Gemini 的 Function Calling (函数调用/工具调用) 功能时,向 API 提交的函数声明(Schema)格式不正确,导致gemini所有模型调用失败,provider可用性全部通过。
除了log插件外已禁用全部插件。经测试切换为默认人格也是同样的问题。
Reproduce / 如何复现?
配置文件(已移除敏感信息)
cmd配置.json
AstrBot version, deployment method (e.g., Windows Docker Desktop deployment), provider used, and messaging platform used. / AstrBot 版本、部署方式(如 Windows Docker Desktop 部署)、使用的提供商、使用的消息平台适配器
Windows Docker Desktop docker compose + napcat
v4.19.5
原生API
OS
Windows
Logs / 报错日志
私聊或者群聊触发词触发LLM报错的关键日志,更多的debug日志可以下载下面的文件
all_logs_20260311_152544.zip
Are you willing to submit a PR? / 你愿意提交 PR 吗?
Code of Conduct