langchain - 💡(How to fix) Fix I want `@tool` defined tool available to return multimodal data

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Code Example

File(
  file_type: literal,
  data: bytes,
  mime_type
)

---

@tool
def image_fetcher():
   ...
   return File("image", BINARY, "image/png")

---

ToolMessage(
    content={
        "type": "image",
        "source_type": "base64",
        "data": BASE64_CONVERTED_DATA,
        "mime_type": "image/png",
    },
    tool_call_id=tool_call_id,
    name=name,
)
RAW_BUFFERClick to expand / collapse

Submission checklist

  • This is a feature request, not a bug report or usage question.
  • I added a clear and descriptive title that summarizes the feature request.
  • I used the GitHub search to find a similar feature request and didn't find it.
  • I checked the LangChain documentation and API reference to see if this feature already exists.
  • This is not related to the langchain-community package.

Package (Required)

  • langchain
  • langchain-openai
  • langchain-anthropic
  • langchain-classic
  • langchain-core
  • langchain-model-profiles
  • langchain-tests
  • langchain-text-splitters
  • langchain-chroma
  • langchain-deepseek
  • langchain-exa
  • langchain-fireworks
  • langchain-groq
  • langchain-huggingface
  • langchain-mistralai
  • langchain-nomic
  • langchain-ollama
  • langchain-openrouter
  • langchain-perplexity
  • langchain-qdrant
  • langchain-xai
  • Other / not sure / general

Feature Description

I want @tool defined tool function able to return multimodal data such as images.

I know I can implement this as a Tool Node and create a LangGraph, but making a graph for this is very tiring (as everyone knows)

I just want to give the agent an image fetching tool and let it run by client.bind_tools(image_fetching_tool).invoke()

The current @tool defined function only accepts raw str and dict which both will converted into just a str I wish there can be File schema that if you used it as return value, a ToolMessage instance with the file data written will be appended on the messages

Use Case

  • Easier and quicker RAG tool implementation with returning images or PDFs

Proposed Solution

  1. Add File class with constructor
File(
  file_type: literal,
  data: bytes,
  mime_type
)
  1. If the user defined
@tool
def image_fetcher():
   ...
   return File("image", BINARY, "image/png")
  1. The library adds
ToolMessage(
    content={
        "type": "image",
        "source_type": "base64",
        "data": BASE64_CONVERTED_DATA,
        "mime_type": "image/png",
    },
    tool_call_id=tool_call_id,
    name=name,
)

on the messages

Alternatives Considered

No response

Additional Context

No response

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

langchain - 💡(How to fix) Fix I want `@tool` defined tool available to return multimodal data