GPT-6.1 Sol are now live on CometAPI →
ai-model/Nghiên cứu CometAPI

Cách xây dựng tác nhân AI với Grok 4.7: Python, gọi công cụ và dự phòng đa mô hình

Xây dựng một tác nhân AI Grok 4.7 bằng Python với khả năng gọi công cụ, thực thi có giới hạn và cơ chế dự phòng do ứng dụng quản lý giữa GPT, Claude, Gemini và DeepSeek.

CometAPI
Bobby SpencerĐội ngũ nghiên cứu mô hình AI và API
Đã cập nhật Oct 4, 2026 15 phút đọc
Cách xây dựng tác nhân AI với Grok 4.7: Python, gọi công cụ và dự phòng đa mô hình
Sử dụng mẫu này

Thực hiện API call đầu tiên.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Nếu bạn muốn xây dựng một ứng dụng AI với GPT, Claude, Gemini, DeepSeek và Grok, hãy dùng một API thống nhất cho đường đi yêu cầu chung và giữ chính sách định tuyến bên trong ứng dụng của bạn. CometAPI cung cấp một URL cơ sở tương thích OpenAI và một danh mục mô hình dùng chung, vì vậy dịch vụ Python có thể gọi các ID mô hình khác nhau thông qua một client duy nhất. Mã của bạn vẫn quyết định mô hình nào chạy, công cụ nào được phép, và khi nào việc dự phòng là an toàn.

Hướng dẫn này xây dựng một tác nhân Grok 4.7 có thể yêu cầu hai công cụ nghiệp vụ chỉ-đọc, từ chối công cụ không xác định và đối số sai định dạng trước khi thực thi, và chỉ chuyển sang một mô hình khác đã được kiểm thử theo hợp đồng sau các lỗi tạm thời được chọn. Mục tiêu không phải là một hệ thống tự chủ thần kỳ. Đây là một vòng lặp nhỏ, có thể kiểm tra, có thể được thử nghiệm và vận hành trong sản xuất.

Bạn Sẽ Xây Dựng Gì

Tác nhân có năm phần rõ ràng:

  1. Một client CometAPI. OpenAI Python SDK dùng URL cơ sở API của CometAPI như hiển thị trong phần thiết lập bên dưới.
  2. Grok 4.7 làm mô hình chính. ID mô hình CometAPI hiện tại là grok-4.7.
  3. Một bộ đăng ký công cụ. Mô hình có thể đề xuất lệnh gọi hàm, nhưng chỉ mã ứng dụng mới có thể thực thi một hàm nằm trong danh sách cho phép.
  4. Một vòng lặp tác nhân có giới hạn. Vòng lặp dừng sau số lượt mô hình cố định thay vì chạy vô hạn.
  5. Một chính sách dự phòng có thứ tự. Các ID mô hình GPT, Claude, Gemini hoặc DeepSeek tương thích chỉ được thử sau lỗi mô hình/API có thể thử lại.

Grok 4.7 hỗ trợ gọi hàm, và CometAPI hiện tài liệu cả tuyến /v1/chat/completions và /v1/responses cho mô hình này. Hướng dẫn này dùng Chat Completions vì tools tương thích OpenAI, các lệnh gọi công cụ của trợ lý, và các thông điệp kết quả tool tương ứng ánh xạ trực tiếp vào một vòng lặp Python gọn, dễ kiểm tra. Tương thích tầng truyền tải không chứng minh tính tương đương tính năng trên mọi mô hình, vì vậy mọi dự phòng cấu hình phải vượt qua cùng bài kiểm thử hợp đồng trước khi đưa vào sản xuất.

Trạng Thái Suy Luận trong Tác Nhân Grok 4.7 Nhiều Lượt

Grok 4.7 chấp nhận mức độ suy luận low, medium, high, hoặc xhigh, với high là mặc định. Trên Responses API của xAI, mọi phản hồi Grok 4.7 bao gồm reasoning.encrypted_content; một vòng lặp nhiều lượt do client quản lý nên chuyển lại các mục suy luận được trả về y như cũ trong yêu cầu tiếp theo. Các vòng lặp dài cũng có thể dùng context compaction: lưu giữ mục nén được trả về như trạng thái mờ và nối thêm các lượt mới sau đó. Vì đây là các trường phản hồi có trạng thái, phụ thuộc vào nhà cung cấp, hãy xác minh rằng tuyến CometAPI đã chọn trả về chúng đầu-cuối trước khi biến chúng thành phụ thuộc sản xuất.

Kiến Trúc Tác Nhân: Mô Hình Đề Xuất, Ứng Dụng Quyết Định

Luồng gọi công cụ an toàn rất đơn giản:

Yêu cầu người dùng → phản hồi mô hình → xác thực lệnh gọi công cụ → thực thi công cụ trong danh sách cho phép → nối kết quả công cụ → phản hồi mô hình

Mô hình không bao giờ nhận thông tin xác thực cơ sở dữ liệu và không bao giờ thực thi Python trực tiếp. Nó tạo ra yêu cầu có cấu trúc như “gọi get_order_status với ID đơn hàng này.” Ứng dụng của bạn kiểm tra tên công cụ, phân tích đối số, áp dụng quy tắc ủy quyền và nghiệp vụ, chạy hàm, và trả về kết quả đã được tuần tự hóa.

Sự tách biệt này quan trọng hơn lựa chọn mô hình. Một mô hình dự phòng nên kế thừa cùng ranh giới công cụ—không rộng hơn—và kết quả công cụ nên được coi là dữ liệu không tin cậy khi chúng chứa nội dung bên ngoài.

Cách Xây Dựng Tác Nhân Grok 4.7 Bằng Python

Bước 1: Cấu Hình OpenAI Python SDK cho CometAPI

Cài đặt OpenAI SDK:

pip install openai

Thiết lập cấu hình qua biến môi trường:

export COMETAPI_KEY="your-cometapi-key"
export PRIMARY_MODEL="grok-4.7"
export FALLBACK_MODEL_1="your-compatible-gpt-model-id"
export FALLBACK_MODEL_2="your-compatible-claude-model-id"
export FALLBACK_MODEL_3="your-compatible-gemini-model-id"
export FALLBACK_MODEL_4="your-compatible-deepseek-model-id"

Hướng dẫn này dùng Chat Completions vì các lệnh gọi công cụ rõ ràng của trợ lý và các thông điệp kết quả công cụ tương ứng giúp luồng điều khiển dễ kiểm tra trong một ví dụ Python gọn. Với các vòng lặp có trạng thái dài hơn, hãy đánh giá Responses API như mô tả ở trên. Ngoài ra, đừng sao chép các ID mô hình cũ từ một bài blog vào sản xuất: truy xuất danh mục GET /api/models công khai của CometAPI trong quá trình triển khai hoặc khởi động, rồi xác nhận khả năng và giá trong thư mục mô hình.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["COMETAPI_KEY"],
    base_url="https://api.cometapi.com/v1",
    max_retries=0,
    timeout=30.0,
)

Thời gian chờ rõ ràng và tắt retry của SDK là có chủ ý. Ứng dụng sẽ phân loại lỗi và quyết định có lặp lại yêu cầu hay chuyển sang mô hình tiếp theo. Retry ẩn làm cho độ trễ, tác dụng phụ trùng lặp, và hành vi dự phòng khó hiểu hơn.

Bước 2: Định Nghĩa Công Cụ Hẹp, Chỉ-Đọc Trước

Bắt đầu với các công cụ đọc dữ liệu thay vì thay đổi dữ liệu. Các định nghĩa sau cho phép tác nhân kiểm tra một đơn hàng và tra cứu tồn kho. Việc triển khai trả về dữ liệu demo; hãy thay thế bằng các lệnh gọi dịch vụ đã xác thực của riêng bạn.

import json

TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "get_order_status",
            "description": "Read the current status of one order.",
            "parameters": {
                "type": "object",
                "properties": {
                    "order_id": {"type": "string"}
                },
                "required": ["order_id"],
                "additionalProperties": False,
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "check_inventory",
            "description": "Read available inventory for one SKU.",
            "parameters": {
                "type": "object",
                "properties": {
                    "sku": {"type": "string"}
                },
                "required": ["sku"],
                "additionalProperties": False,
            },
        },
    },
]

def get_order_status(order_id: str) -> dict:
    # Replace this demo with an authenticated, read-only service call.
    return {"order_id": order_id, "status": "in_transit"}

def check_inventory(sku: str) -> dict:
    # Replace this demo with an authenticated, read-only service call.
    return {"sku": sku, "available_units": 12}

TOOL_REGISTRY = {
    "get_order_status": get_order_status,
    "check_inventory": check_inventory,
}

Một lược đồ JSON cải thiện hình dạng yêu cầu, nhưng nó không phải là ủy quyền. Hãy xác thực độ dài và định dạng đối số, xác nhận rằng người dùng hiện tại có thể truy cập đơn hàng hoặc SKU yêu cầu, và giới hạn kích thước mọi kết quả công cụ trước khi trả về cho mô hình.

Bước 3: Thêm Chính Sách Dự Phòng Đa Mô Hình, Hẹp

Dự phòng nên phục hồi khỏi lỗi tuyến tạm thời, không che giấu yêu cầu bị hỏng. Hướng dẫn dự phòng chính thức của CometAPI khuyến nghị chuyển sang tuyến cấu hình tiếp theo đối với lỗi kết nối, hết thời gian chờ, HTTP 408, HTTP 429, và phản hồi 5xx tạm thời. Thông tin xác thực không hợp lệ, tham số không được hỗ trợ, và yêu cầu không hợp lệ nên thất bại ngay.

from openai import APIConnectionError, APIStatusError, APITimeoutError

def configured_models() -> list[str]:
    names = [
        os.getenv("PRIMARY_MODEL", "grok-4.7"),
        os.getenv("FALLBACK_MODEL_1"),
        os.getenv("FALLBACK_MODEL_2"),
        os.getenv("FALLBACK_MODEL_3"),
        os.getenv("FALLBACK_MODEL_4"),
    ]
    return [name for name in names if name]

def is_retryable(error: Exception) -> bool:
    if isinstance(error, (APIConnectionError, APITimeoutError)):
        return True
    if isinstance(error, APIStatusError):
        return error.status_code in {408, 429} or error.status_code >= 500
    return False

def complete_with_fallback(messages: list[dict], tools: list[dict]):
    models = configured_models()
    last_error = None

    for index, model in enumerate(models):
        try:
            response = client.chat.completions.create(
                model=model,
                messages=messages,
                tools=tools,
                tool_choice="auto",
            )
            return response, model
        except Exception as error:
            last_error = error
            final_route = index == len(models) - 1
            if final_route or not is_retryable(error):
                raise

    raise RuntimeError("No configured model completed the request") from last_error

Danh sách mô hình là cấu hình, không phải xếp hạng chất lượng. Chọn các mô hình dự phòng hỗ trợ cùng vai trò thông điệp, lược đồ công cụ, phương thức đầu vào, yêu cầu ngữ cảnh, và hành vi phản hồi cần thiết cho tác nhân này. Ghi nhật ký tuyến đã chọn và lỗi gây ra mọi lần chuyển đổi.

Bước 4: Chạy Vòng Lặp Tác Nhân Grok 4.7 Có Giới Hạn

Vòng lặp dưới đây gửi hội thoại, thực thi mọi lệnh gọi công cụ trong danh sách cho phép, nối kết quả với tool_call_id tương ứng, và yêu cầu mô hình đã chọn hoàn tất câu trả lời.

def execute_tool_call(tool_call) -> str:
    name = tool_call.function.name

    if name not in TOOL_REGISTRY:
        return json.dumps({"error": f"Tool not allowed: {name}"})

    try:
        arguments = json.loads(tool_call.function.arguments)
        result = TOOL_REGISTRY[name](**arguments)
        return json.dumps(result)
    except (json.JSONDecodeError, TypeError, ValueError) as error:
        return json.dumps({"error": f"Invalid tool arguments: {error}"})

def run_agent(user_text: str, max_turns: int = 4) -> dict:
    messages = [
        {
            "role": "system",
            "content": (
                "You are a support agent. Use tools only when needed. "
                "Never invent order or inventory data."
            ),
        },
        {"role": "user", "content": user_text},
    ]
    route_log = []

    for turn in range(max_turns):
        response, model = complete_with_fallback(messages, TOOLS)
        route_log.append({"turn": turn + 1, "model": model})

        assistant = response.choices[0].message
        messages.append(assistant.model_dump(exclude_none=True))

        if not assistant.tool_calls:
            return {
                "answer": assistant.content,
                "routes": route_log,
                "usage": response.usage.model_dump() if response.usage else None,
            }

        for tool_call in assistant.tool_calls:
            messages.append(
                {
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": execute_tool_call(tool_call),
                }
            )

    raise RuntimeError("Agent stopped after reaching max_turns")

result = run_agent("Where is order A-104, and is SKU BLUE-42 in stock?")
print(result["answer"])
print(result["routes"])

Mã hỗ trợ nhiều lệnh gọi công cụ trong một phản hồi mô hình vì nó nối kết quả cho mọi lệnh gọi được trả về. Nếu một công cụ thay đổi trạng thái—gửi email, đặt đơn hàng, hoặc hoàn tiền—hãy thêm khóa idempotency và bước xác nhận bởi con người. Không bao giờ khởi động lại toàn bộ lượt tác nhân một cách mù quáng sau khi hết thời gian chờ nếu một tác dụng phụ có thể đã xảy ra.

GPT, Claude, Gemini, và DeepSeek Phù Hợp Với Cùng Ứng Dụng Như Thế Nào

CometAPI có thể giảm trùng lặp ở lớp kết nối: một tài khoản, một URL cơ sở tương thích OpenAI cho đường đi chung, và một ID mô hình do mã ứng dụng chọn. Điều đó khiến GPT, Claude, Gemini, DeepSeek, và Grok trở thành ứng viên đằng sau một giao diện nội bộ duy nhất.

Điều đó không khiến các mô hình có thể thay thế cho nhau. Trước khi thêm dự phòng, hãy xác minh:

  • ID mô hình hiện tại được trả về bởi danh mục CometAPI;
  • tuyến hỗ trợ lược đồ công cụ và vai trò thông điệp yêu cầu;
  • đối số lệnh gọi công cụ và hành vi nhiều lệnh gọi khớp với hợp đồng tác nhân;
  • cửa sổ ngữ cảnh và phương thức đầu vào phù hợp yêu cầu;
  • phản hồi có thể được xác thực trước khi tới người dùng;
  • độ trễ và chi phí nằm trong ngân sách sản phẩm.

Tính năng gốc của nhà cung cấp có thể yêu cầu endpoint gốc hoặc adapter riêng. Giữ các ngoại lệ đó rõ ràng thay vì ép mọi khả năng đi qua giao diện chung.

Dự Phòng Đa Mô Hình Grok 4.7 Không Phải Là Đa Tác Nhân

Chuỗi dự phòng đa mô hình chọn một mô hình khác khi một tuyến thất bại. Hệ thống đa tác nhân gán trách nhiệm khác nhau cho các tác nhân riêng biệt—ví dụ, một người lập kế hoạch, một người nghiên cứu, và một người đánh giá. Hai mô thức này giải quyết các vấn đề khác nhau.

Nếu bạn mở rộng tác nhân Grok 4.7 này thành quy trình đa tác nhân, hãy trao cho mỗi thành phần một vai trò hẹp, danh sách công cụ riêng, ngân sách giới hạn, và chuyển giao có cấu trúc. Đừng để mọi tác nhân gọi mọi công cụ hoặc chuyển tiếp bản ghi hội thoại không giới hạn. Bắt đầu với một tác nhân cho đến khi dữ liệu đánh giá chứng minh rằng phân chia vai trò cải thiện kết quả.

Hàng Rào Bảo Vệ Sản Xuất cho Tác Nhân Grok 4.7

Xác Thực Trước Khi Thực Thi Công Cụ

Kiểm tra tên công cụ, lược đồ đối số, quyền sở hữu tenant, quyền người dùng, và giới hạn tốc độ trong mã ứng dụng. Xem mô tả công cụ như hướng dẫn cho mô hình, không phải kiểm soát bảo mật.

Tách Công Cụ Đọc Khỏi Công Cụ Ghi

Công cụ chỉ-đọc thường có thể chạy tự động sau khi ủy quyền. Công cụ ghi nên yêu cầu kiểm tra chặt chẽ hơn, idempotency, và xác nhận cho các hành động hệ trọng.

Giới Hạn Mọi Vòng Lặp

Đặt tối đa số lượt mô hình, lệnh gọi công cụ, thời gian thực, kích thước prompt, và ngân sách token. Trả về lỗi kiểm soát hoặc lộ trình chuyển escal khi đạt tới giới hạn.

Ghi Lại Dấu Vết Quyết Định

Ghi nhật ký nhiệm vụ yêu cầu, phiên bản chính sách, ID mô hình đã chọn, lý do dự phòng, tên công cụ, độ trễ công cụ, kết quả xác thực, sử dụng token, và trạng thái cuối. Không ghi nhật ký bí mật hoặc nội dung khách hàng không cần thiết.

Dùng Kiểm Thử Hợp Đồng, Không Dùng Giả Định

Chạy cùng bộ bài kiểm thử cho mọi mô hình cấu hình. Bộ tối thiểu hữu ích bao gồm một câu trả lời bình thường, một lệnh gọi công cụ, nhiều lệnh gọi công cụ, đối số sai định dạng, công cụ không xác định, hết thời gian công cụ, lỗi 429 ở mô hình chính, và khóa API không hợp lệ mà không được kích hoạt dự phòng.

Danh Sách Triển Khai

  • Truy xuất ID mô hình hiện tại và xác minh tuyến Grok 4.7 trước khi triển khai.
  • Giữ khóa CometAPI trong trình quản lý bí mật, không trong mã nguồn hoặc prompt.
  • Bắt đầu với công cụ chỉ-đọc và lược đồ JSON rõ ràng.
  • Áp dụng xác thực và ủy quyền tenant trước mỗi lệnh gọi công cụ.
  • Chỉ cho phép dự phòng đối với lỗi tạm thời đã phân loại.
  • Kiểm thử mọi dự phòng theo cùng hợp đồng gọi công cụ.
  • Thêm idempotency và xác nhận trước khi bật công cụ ghi.
  • Thiết lập giới hạn vòng lặp, độ trễ, ngữ cảnh, và chi phí.
  • Đo lường thành công nhiệm vụ, không chỉ khả dụng của API.

Tại Sao Xây Dựng Tác Nhân Này Qua CometAPI?

CometAPI hữu ích ở đây vì tích hợp chung vẫn nhỏ gọn. OpenAI Python SDK trỏ tới một URL cơ sở, Grok 4.7 được chọn bằng ID mô hình, và các mô hình tương thích từ nhà cung cấp khác có thể được đặt sau cùng chính sách định tuyến do ứng dụng sở hữu.

Điều đó giúp nhóm có không gian đánh giá GPT, Claude, Gemini, và DeepSeek mà không rải mã kết nối đặc thù của nhà cung cấp khắp sản phẩm. Nó cũng giữ một ranh giới quan trọng: CometAPI cung cấp truy cập, trong khi ứng dụng của bạn sở hữu kiểm tra khả năng, thực thi công cụ, chính sách dự phòng, đánh giá, và hành vi hướng tới người dùng.

Xem trang mô hình Grok 4.7, cấu hình client từ CometAPI quickstart, và truy xuất ID mô hình hiện tại trước khi chọn dự phòng sản xuất.

FAQ

Tôi nên dùng API nào cho ứng dụng với GPT, Claude, Gemini, và DeepSeek?

Đối với đường đi chat và gọi công cụ chung, một API thống nhất tương thích OpenAI như CometAPI có thể giảm công việc tích hợp. Giữ việc chọn mô hình và chính sách dự phòng trong ứng dụng của bạn, và dùng adapter gốc nhà cung cấp khi một tính năng yêu cầu không phù hợp hợp đồng chia sẻ.

Grok 4.7 có thể gọi trực tiếp các hàm Python không?

Grok 4.7 có thể trả về yêu cầu gọi hàm có cấu trúc. Ứng dụng Python của bạn phân tích yêu cầu, xác thực, thực thi một hàm trong danh sách cho phép, và gửi kết quả lại cho mô hình. Bản thân mô hình không thực thi Python cục bộ.

Có phải mọi lỗi đều kích hoạt một mô hình khác?

Không. Dùng dự phòng cho lỗi kết nối được chọn, hết thời gian chờ, 408, 429, và phản hồi 5xx tạm thời. Yêu cầu không hợp lệ, lỗi xác thực, và tham số không được hỗ trợ nên được sửa thay vì gửi tới mô hình khác.

Tôi có thể dùng một lược đồ công cụ cho mọi mô hình không?

Chỉ sau khi kiểm thử. Giao vận chung không đảm bảo hành vi công cụ giống hệt nhau, chất lượng đối số, hành vi gọi song song, hoặc thực thi lược đồ. Thêm một mô hình vào chuỗi chỉ sau khi nó vượt qua hợp đồng gọi công cụ của tác nhân.

Hệ thống dự phòng đa mô hình có phải là hệ thống đa tác nhân không?

Không. Dự phòng thay đổi mô hình dùng cho yêu cầu sau một lỗi tuyến. Kiến trúc đa tác nhân gán nhiệm vụ khác nhau cho các tác nhân riêng. Hãy xây dựng chúng như các lớp riêng với kiểm thử và kiểm soát riêng.

Nguồn

Tiếp tục học

Kết nối bài viết này với quyết định tiếp theo.

Xem tất cả chủ đề
Được xuất bản Oct 4, 2026
Cập nhật lần cuối Oct 4, 2026
0 lượt xem
Đã được xem xét về độ rõ ràng, ghi nguồn và thuật ngữ API hiện tại.

Đọc thêm