Chuyển đến nội dung
GetAPI
Tiếng Việt
Giao diện
Thông báo
Thông báo
Đang tải…
Menu

Truyền luồng Responses từ GetAPI.ONE

Đọc luồng sự kiện do máy chủ gửi, chỉ nối các đoạn văn bản tăng thêm và phân biệt các sự kiện hoàn thành, thất bại, chưa đầy đủ là những kết quả kết thúc riêng.

Chọn đường dẫn tương thích

  • Dùng mô hình hiện tại trong danh mục công bố điểm cuối Responses.
  • Giữ khóa API trong máy chủ hoặc tiến trình cục bộ đáng tin cậy.
  • Xác định cách bên gọi hiển thị văn bản một phần và khôi phục khi luồng bị gián đoạn.
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

Đọc vòng đời sự kiện

  1. Gửi stream=true qua SDK hoặc ứng dụng HTTP phía máy chủ, tắt tự động thử lại cho yêu cầu có kiểm soát đầu tiên.
  2. Chỉ nối nội dung response.output_text.delta vào văn bản hiển thị.
  3. Dừng khi gặp response.completed và giữ siêu dữ liệu phản hồi cuối mà ứng dụng cần.
  4. Thể hiện response.failed và response.incomplete là kết quả không thành công; không đánh dấu văn bản một phần là hoàn tất.
  5. Xem sự kiện lỗi, ngoại lệ truyền tải, EOF trước khi hoàn thành hoặc hủy cục bộ là không thành công và đóng luồng.
python
import os
from openai import OpenAI

terminal_event = None
try:
    with OpenAI(
        api_key=os.environ["GETAPI_ONE_API_KEY"],
        base_url="https://www.getapi.one/v1",
        timeout=30.0,
        max_retries=0,
    ) as client:
        with client.responses.create(
            model="<RESPONSES_MODEL_ID_FROM_CURRENT_CATALOG>",
            input="Give three concise deployment checks.",
            stream=True,
        ) as stream:
            for event in stream:
                if event.type == "response.output_text.delta":
                    print(event.delta, end="", flush=True)
                elif event.type == "response.completed":
                    terminal_event = event.type
                    print("\ncompleted")
                    break
                elif event.type in {"response.failed", "response.incomplete", "error"}:
                    terminal_event = event.type
                    raise RuntimeError(f"stream ended with {event.type}: {event}")
except KeyboardInterrupt:
    raise SystemExit("cancelled locally; the stream and client were closed")

if terminal_event != "response.completed":
    raise RuntimeError("stream ended before response.completed")

Ánh xạ sự kiện sang trạng thái giao diện

Sự kiệnHành động của ứng dụng
response.output_text.deltaNối event.delta; không thay thế văn bản đã hiển thị.
response.completedĐánh dấu thành công và kết thúc trạng thái tải.
response.failedHiển thị lỗi có cấu trúc và thao tác thử lại an toàn.
response.incompleteGiữ đầu ra một phần ở trạng thái chưa đầy đủ rõ ràng và kiểm tra chi tiết nguyên nhân.

Xác minh kết quả mong đợi

  • Văn bản xuất hiện dần mà không lặp các đoạn tăng thêm.
  • Trạng thái tải chỉ kết thúc sau sự kiện kết thúc hoặc lỗi truyền tải.
  • Kết nối bị gián đoạn không bao giờ hiển thị trạng thái thành công sai.

Xử lý lỗi truyền tải và giao thức

  • Nếu không có sự kiện, kiểm tra đúng đường dẫn /v1/responses, stream=true, bộ đệm proxy và điểm cuối mà mô hình công bố.
  • Nếu đầu ra bị lặp, chỉ nối mỗi đoạn tăng thêm một lần và không trộn đầu ra SDK đã tích lũy với sự kiện thô.
  • Chỉ thử lại trước khi có tác động quan sát được hoặc khi có cơ chế lũy đẳng ở cấp ứng dụng; mất kết nối không chứng minh yêu cầu thượng nguồn chưa làm gì.

Giữ truyền luồng ở phía máy chủ

text
Browser → your authenticated backend → GetAPI.ONE
                 server-held key only

Các bước tiếp theo