Home / Function/ _convert_from_v1_to_anthropic() — langchain Function Reference

_convert_from_v1_to_anthropic() — langchain Function Reference

Architecture documentation for the _convert_from_v1_to_anthropic() function in _compat.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  02f601bc_0436_a4b9_4ca2_139300c429ca["_convert_from_v1_to_anthropic()"]
  229dd2f8_cd21_122c_8dc9_e4e6685d089f["_compat.py"]
  02f601bc_0436_a4b9_4ca2_139300c429ca -->|defined in| 229dd2f8_cd21_122c_8dc9_e4e6685d089f
  b37385b6_2524_151c_2d19_4c6b96b5a5d4["_convert_annotation_from_v1()"]
  02f601bc_0436_a4b9_4ca2_139300c429ca -->|calls| b37385b6_2524_151c_2d19_4c6b96b5a5d4
  style 02f601bc_0436_a4b9_4ca2_139300c429ca fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/partners/anthropic/langchain_anthropic/_compat.py lines 96–199

def _convert_from_v1_to_anthropic(
    content: list[types.ContentBlock],
    tool_calls: list[types.ToolCall],
    model_provider: str | None,
) -> list[dict[str, Any]]:
    new_content: list = []
    for block in content:
        if block["type"] == "text":
            if model_provider == "anthropic" and "annotations" in block:
                new_block: dict[str, Any] = {"type": "text"}
                new_block["citations"] = [
                    _convert_annotation_from_v1(a) for a in block["annotations"]
                ]
                if "text" in block:
                    new_block["text"] = block["text"]
            else:
                new_block = {"text": block.get("text", ""), "type": "text"}
            new_content.append(new_block)

        elif block["type"] == "tool_call":
            tool_use_block = {
                "type": "tool_use",
                "name": block.get("name", ""),
                "input": block.get("args", {}),
                "id": block.get("id", ""),
            }
            if "caller" in block.get("extras", {}):
                tool_use_block["caller"] = block["extras"]["caller"]
            new_content.append(tool_use_block)

        elif block["type"] == "tool_call_chunk":
            if isinstance(block["args"], str):
                try:
                    input_ = json.loads(block["args"] or "{}")
                except json.JSONDecodeError:
                    input_ = {}
            else:
                input_ = block.get("args") or {}
            new_content.append(
                {
                    "type": "tool_use",
                    "name": block.get("name", ""),
                    "input": input_,
                    "id": block.get("id", ""),
                }
            )

        elif block["type"] == "reasoning" and model_provider == "anthropic":
            new_block = {}
            if "reasoning" in block:
                new_block["thinking"] = block["reasoning"]
            new_block["type"] = "thinking"
            if signature := block.get("extras", {}).get("signature"):
                new_block["signature"] = signature

            new_content.append(new_block)

        elif block["type"] == "server_tool_call" and model_provider == "anthropic":
            new_block = {}
            if "id" in block:
                new_block["id"] = block["id"]
            new_block["input"] = block.get("args", {})
            if partial_json := block.get("extras", {}).get("partial_json"):
                new_block["input"] = {}
                new_block["partial_json"] = partial_json
            else:
                pass
            if block.get("name") == "code_interpreter":
                new_block["name"] = "code_execution"
            elif block.get("name") == "remote_mcp":
                if "tool_name" in block.get("extras", {}):
                    new_block["name"] = block["extras"]["tool_name"]
                if "server_name" in block.get("extras", {}):
                    new_block["server_name"] = block["extras"]["server_name"]
            else:
                new_block["name"] = block.get("name", "")
            if block.get("name") == "remote_mcp":
                new_block["type"] = "mcp_tool_use"
            else:
                new_block["type"] = "server_tool_use"
            new_content.append(new_block)

Domain

Subdomains

Frequently Asked Questions

What does _convert_from_v1_to_anthropic() do?
_convert_from_v1_to_anthropic() is a function in the langchain codebase, defined in libs/partners/anthropic/langchain_anthropic/_compat.py.
Where is _convert_from_v1_to_anthropic() defined?
_convert_from_v1_to_anthropic() is defined in libs/partners/anthropic/langchain_anthropic/_compat.py at line 96.
What does _convert_from_v1_to_anthropic() call?
_convert_from_v1_to_anthropic() calls 1 function(s): _convert_annotation_from_v1.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free