Nhảy đến nội dung chính

ToolMessage - Kết quả phản hồi từ một công cụ (tool)

Trong LangChain, ToolMessage đại diện cho kết quả phản hồi từ một công cụ (tool) sau khi mô hình LLM gọi tool đó.

Nó giống như AI bảo: "Tôi cần dùng máy tính để tính 2 + 2", sau đó bạn gửi lại kết quả "4" bằng ToolMessage.

Khi nào dùng ToolMessage?

Khi bạn dùng bind_tools() để cho phép LLM gọi các hàm (tools), LangChain sẽ:

  1. LLM tạo một ToolCall (ví dụ: gọi hàm multiply(a=2, b=3)).

  2. Bạn thực thi hàm Python tương ứng.

  3. Sau đó, bạn dùng ToolMessage để truyền kết quả trả về của tool đó lại cho LLM.

Cú pháp

from langchain_core.messages import ToolMessage

msg = ToolMessage(tool_call_id="abc123", content="Kết quả là 6")

Các tham số:

Tham sốÝ nghĩa
tool_call_idID của lời gọi hàm (do ToolCallMessage sinh ra)
contentNội dung trả lời (kết quả của tool)
Ví dụ đầy đủ: Gọi hàm nhân trong Python

1. Định nghĩa hàm (tool)

def multiply(a: int, b: int) -> int:
    """Nhân hai số."""
    return a * b

2. Dùng LLM + tool

from langchain_core.messages import HumanMessage, ToolMessage
from langchain_openai import ChatOpenAI

chat = ChatOpenAI().bind_tools([multiply], parallel_tool_calls=False)

3. LLM đưa ra ToolCall

messages = [
    HumanMessage(content="Hãy nhân 4 với 5")
]

response = chat.invoke(messages)
tool_call = response.tool_calls[0]
print(tool_call)  # --> thông tin về lời gọi hàm multiply

4. Gửi kết quả về lại cho LLM bằng ToolMessage

# Gọi hàm thủ công
result = multiply(**tool_call.args)

# Gửi kết quả về lại
followup = chat.invoke([
    response,
    ToolMessage(tool_call_id=tool_call.id, content=str(result))
])

print(followup.content)  # => LLM phản hồi dựa trên kết quả tool

Quan trọng

  • ToolMessage cực kỳ quan trọng khi bạn dùng nhiều bước logic có liên quan đến tool.

  • tool_call_id phải khớp chính xác với ToolCallMessage từ LLM, để LLM biết bạn đang trả lời cho yêu cầu nào.

  • Bạn có thể dùng nhiều ToolMessage nếu LLM gọi nhiều hàm cùng lúc (nếu parallel_tool_calls=True).

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft