Đi tới nội dung
Tất cả tài liệu

Hướng dẫn

Gọi công cụ

Cả hai mô hình đều gọi công cụ theo định dạng của OpenAI: bạn mô tả các hàm, mô hình yêu cầu một hàm, bạn chạy nó và gửi kết quả trở lại.

Đã kiểm tra 26 tháng 10, 2026

Vòng lặp

  1. Gửi tools: mỗi mục là một hàm có tên, mô tả và tham số theo JSON Schema.
  2. Khi mô hình muốn gọi một công cụ, finish_reason của câu trả lời là tool_calls và message.tool_calls liệt kê chúng, với đối số ở dạng chuỗi JSON.
  3. Chạy từng công cụ, rồi thêm một tin nhắn tool với tool_call_id của nó và kết quả.
  4. Gửi lại cuộc trò chuyện. Lặp lại cho đến khi finish_reason là stop.
Python
import json
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Today's weather in a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

def get_weather(city):
    return {"city": city, "high_c": 21, "sky": "clear"}

messages = [{"role": "user", "content": "Should I bring a jacket in Lisbon today?"}]
while True:
    reply = client.chat.completions.create(model="deepseek-v4.1-flash-uncensored", messages=messages, tools=tools)
    message = reply.choices[0].message
    messages.append(message)
    if not message.tool_calls:
        print(message.content)
        break
    for call in message.tool_calls:
        result = get_weather(**json.loads(call.function.arguments))
        messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})

tool_choice

Mô hìnhNhận
deepseek-v4.1-flash-uncensoredauto, none, required, hoặc một hàm được chỉ tên. Cũng nhận parallel_tool_calls.
glm-5.3-flash-uncensoredauto hoặc none. Nó tự chọn công cụ; bất kỳ giá trị nào khác sẽ bị 400 unsupported_tool_choice.

Nên biết

  • Mỗi tin nhắn tool cần có tool_call_id mà nó trả lời, nếu không lệnh gọi sẽ bị từ chối với 400 invalid_messages.
  • Lược đồ công cụ đi kèm mọi yêu cầu và được tính là token đầu vào.
  • Các mô hình không tự chạy gì cả. Mã của bạn chạy công cụ, nên mã quyết định chúng được truy cập đến đâu.