mirror of
https://github.com/Xe138/AI-Trader.git
synced 2026-04-02 09:37:23 -04:00
After extensive systematic debugging, identified and fixed LangChain bug where parse_tool_call() returns string args instead of dict. **Root Cause:** LangChain's parse_tool_call() has intermittent bug returning unparsed JSON string for 'args' field instead of dict object, violating AIMessage Pydantic schema. **Solution:** ToolCallArgsParsingWrapper provides two-layer fix: 1. Patches parse_tool_call() to detect string args and parse to dict 2. Normalizes non-standard tool_call formats to OpenAI standard **Implementation:** - Patches parse_tool_call in langchain_openai.chat_models.base namespace - Defensive approach: only acts when string args detected - Handles edge cases: invalid JSON, non-standard formats, invalid_tool_calls - Minimal performance impact: lightweight type checks - Thread-safe: patches apply at wrapper initialization **Testing:** - Confirmed fix working in production with DeepSeek Chat v3.1 - All tool calls now process successfully without validation errors - No impact on other AI providers (OpenAI, Anthropic, etc.) **Impact:** - Enables DeepSeek models via OpenRouter - Maintains backward compatibility - Future-proof against similar issues from other providers Closes systematic debugging investigation that spanned 6 alpha releases. Fixes: tool_calls.0.args validation error [type=dict_type, input_type=str]