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_id ID của lời gọi hàm (do ToolCallMessage sinh ra)
content Nộ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

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

 

 

 


Phiên bản #1
Được tạo 22 tháng 4 2025 03:13:07 bởi Đỗ Ngọc Tú
Được cập nhật 29 tháng 4 2025 02:58:25 bởi Đỗ Ngọc Tú