Source: https://ailoot.ai/docs/vi/connect/openai-sdk/
Canonical: https://ailoot.ai/docs/vi/connect/openai-sdk/
Language: vi

[Kết nối](https://ailoot.ai/docs/vi/) 

# OpenAI SDK

[Markdown](https://ailoot.ai/docs/vi/connect/openai-sdk/index.md)

Các thư viện OpenAI chính thức cho Python và Node.js hoạt động với Ailoot mà không cần sửa mã — chỉ thay địa chỉ và khóa.

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#install)Cài đặt

```bash
pip install openai
```

```bash
npm install openai
```

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#client)Kết nối

Đặt địa chỉ gốc `https://api.ailoot.ai/v1`. Có thể đặt trong mã hoặc qua các biến `OPENAI_BASE_URL` và `OPENAI_API_KEY` — khi đó hoàn toàn không cần sửa mã.

```python
from openai import OpenAI
import os

client = OpenAI(max_retries=0, 
    base_url="https://api.ailoot.ai/v1",
    api_key=os.environ["AILOOT_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Giải thích API là gì trong hai câu."}],
)
print(resp.choices[0].message.content)
```

```js
import OpenAI from "openai";

const client = new OpenAI({ maxRetries: 0,
  baseURL: "https://api.ailoot.ai/v1",
  apiKey: process.env.AILOOT_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "claude-sonnet-5-5",
  messages: [{ role: "user", content: "Giải thích API là gì trong hai câu." }],
});
console.log(resp.choices[0].message.content);
```

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#responses)Responses API

Định dạng mới của OpenAI. Dùng được với các mô hình có định dạng Responses trong danh mục (53 mã định danh, gồm Claude, GPT, DeepSeek, Qwen, Kimi, GLM).

```python
resp = client.responses.create(
    model="gpt-6.1-sol",
    instructions="Trả lời ngắn gọn, đúng trọng tâm.",
    input="TCP khác UDP ở điểm nào?",
)
print(resp.output_text)
```

```js
const resp = await client.responses.create({
  model: "gpt-6.1-sol",
  instructions: "Trả lời ngắn gọn, đúng trọng tâm.",
  input: "TCP khác UDP ở điểm nào?",
});
console.log(resp.output_text);
```

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#tools)Công cụ (function calling)

```python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Thời tiết trong thành phố",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

import json

messages = [{"role": "user", "content": "Thời tiết ở Kazan thế nào?"}]
# Tắt tính năng tự động thử lại: nếu hết thời gian chờ, trước tiên hãy kiểm tra Request ID trong lịch sử sử dụng.
client = client.with_options(max_retries=0)
for turn in range(4):
    resp = client.chat.completions.create(
        model="claude-sonnet-5-5", messages=messages, tools=tools,
    )
    message = resp.choices[0].message
    messages.append(message.model_dump(exclude_none=True))
    if not message.tool_calls:
        print(message.content)
        break
    for call in message.tool_calls:
        if call.function.name != "get_weather":
            raise ValueError("Unexpected function")
        arguments = json.loads(call.function.arguments)
        # Thay bằng hàm thời tiết của bạn; ví dụ này sử dụng dữ liệu minh họa.
        result = {"city": arguments["city"], "temperature_c": 20, "demo": True}
        messages.append({"role": "tool", "tool_call_id": call.id,
                         "content": json.dumps(result, ensure_ascii=False)})
else:
    raise RuntimeError("Tool loop limit reached")
```

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#embeddings)Embedding

```python
emb = client.embeddings.create(
    model="nvidia/nemotron-3-embed-1b",
    input=["Tài liệu thứ nhất", "Tài liệu thứ hai"],
)
print(len(emb.data), len(emb.data[0].embedding))
```

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#vision)Hình ảnh đầu vào

```python
resp = client.chat.completions.create(
    model="gpt-6.1-sol",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Trong ảnh này có gì?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
        ],
    }],
)
```

## [](https://ailoot.ai/docs/vi/connect/openai-sdk/#errors)Xử lý lỗi

Lỗi Ailoot được trả về theo định dạng OpenAI, nên các ngoại lệ tiêu chuẩn của SDK có thể bắt được. Nội dung lỗi có Request ID.

```python
import openai

try:
    resp = client.chat.completions.create(model="claude-sonnet-5-5", messages=[{"role": "user", "content": "Xin chào"}])
except openai.APIStatusError as e:
    print(e.status_code, e.response.json()["error"]["code"])
    print(e.response.headers.get("x-request-id"))
```

```js
try {
  await client.chat.completions.create({ model: "claude-sonnet-5-5", messages: [{ role: "user", content: "Xin chào" }] });
} catch (err) {
  if (err instanceof OpenAI.APIError) {
    console.log(err.status, err.code, err.headers?.["x-request-id"]);
  }
}
```

OpenAI SDK và Anthropic SDK thường tự động gửi lại khi gặp lỗi mạng và 5xx. Hãy tắt hành vi này khi tạo nội dung (`max_retries=0`) và kiểm tra `X-Should-Retry` trước khi thử lại. Không nhận được phản hồi không có nghĩa là yêu cầu chưa được thực hiện.

Còn câu hỏi? Hãy gửi Request ID và mô tả — chúng tôi sẽ giúp tìm hiểu.[Liên hệ hỗ trợ](mailto:support@ailoot.ai)

## Ailoot · Công ty và danh mục dự án của công ty





Ailoot dựa trên kinh nghiệm vận hành tích lũy, cơ sở khách hàng lớn, dịch vụ ổn định và việc kiểm soát KPI liên tục.





Công ty và danh mục dự án của công ty: hàng triệu khách hàng; doanh số hàng tỷ mỗi tháng.





Ailoot áp dụng kinh nghiệm vận hành này để cung cấp quyền truy cập API vào các tính năng AI trong sản phẩm của khách hàng, tác tử, ứng dụng và quy trình tự động hóa.
