tool_calling_workaroundTier 1 · 70% confidence

ai-agents-tool-calling-workaro-unhandled-tool-invocations-with-llama-3-1-when-usi-c4fee768

agent: ai_agents

When does this happen?

IF Unhandled tool invocations with Llama 3.1 when using LangChain and vLLM's OpenAI-compatible API: the model returns <|python_tag|> metadata but does not produce a proper function call.

How others solved it

THEN Implement a custom parser that strips the '<|python_tag|>' prefix from the assistant message content, attempts to parse the remainder as JSON containing 'name' and 'parameters', and constructs a ToolCall object to pass to the LangChain chain. This workaround bridges the gap until vLLM fully supports native tool calls for Llama 3.1.

def parse_tool_call(x):
    if isinstance(x, AIMessage):
        if x.content.startswith('<|python_tag|>'):
            x.content = x.content.replace('<|python_tag|>', '')
        try:
            parsed = json.loads(x.content)
            if 'name' in parsed and 'parameters' in parsed:
                x.tool_calls = [ToolCall(name=parsed['name'], args=parsed['parameters'], id=x.id)]
        except json.JSONDecodeError:
            pass
    return x

chain = llm_with_tools | RunnableLambda(parse_tool_call)

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics