پرش به محتوا

Responses API

endpoint تازه‌تر OpenAI روی گیسو: ورودی ساده، ابزار جست‌وجوی وب داخلی و هزینهٔ هر فراخوانی آن، پاسخ جریانی و مدل‌هایی که این مسیر را می‌پذیرند.

بازبینی: ۸ مهر ۱۴۰۵ ۴ دقیقه مطالعه

Responses API شکل تازه‌تر API شرکت OpenAI است: ورودی ساده‌تر (یک رشته یا فهرستی از بخش‌ها)، ابزارهای داخلی مثل جست‌وجوی وب، و خروجی‌ای که هم متن و هم کارهای مدل را در یک فهرست می‌آورد. گیسو درخواست این endpoint را تقریباً همان‌طور که هست به OpenAI می‌رساند (تفاوت‌ها در پایین همین صفحه آمده‌اند)؛ پس نمونه‌های Responses API در مستندات OpenAI با عوض کردن نشانی پایه کار می‌کنند.

POSThttps://gisoo.pro/api/v1/responses
کدام مدل‌ها

Responses API برای مدل‌های OpenAI ساخته شده و با آن‌ها کار می‌کند (مثل gpt-4.1-mini، gpt-5-mini و مدل‌های سری gpt-5). برای Claude، Gemini، DeepSeek و بقیهٔ سازنده‌ها از Chat Completions استفاده کنید. چند مدل ویژهٔ OpenAI (مثل نسخه‌های Pro و Codex) فقط از همین مسیر جواب می‌دهند.

درخواست ساده#

from openai import OpenAI

client = OpenAI(base_url="https://gisoo.pro/api/v1", api_key="sk-gisoo-v1-...")

response = client.responses.create(
    model="gpt-4.1-mini",
    instructions="Answer in Persian.",
    input="Explain the difference between RAM and storage in three short lines.",
)
print(response.output_text)

output_text میان‌بر SDK برای همهٔ متن خروجی است. شیء کامل پاسخ در output فهرستی از بخش‌هاست: پیام، فراخوانی ابزار، جست‌وجو و استدلال.

با ابزار web_search مدل پیش از پاسخ در وب جست‌وجو می‌کند و منبع‌ها را در پاسخ می‌آورد؛ برای پرسش‌هایی که به اطلاعات روز نیاز دارند.

curl https://gisoo.pro/api/v1/responses \
  -H "Authorization: Bearer $GISOO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1-mini",
    "input": "What is the latest stable version of Laravel? Cite the source.",
    "tools": [{"type": "web_search"}]
  }'

هزینهٔ ابزارهای داخلی#

علاوه بر توکن‌ها، هر بار که مدل یک ابزار داخلی را اجرا کند، هزینهٔ همان اجرا جدا به صورتحساب همان درخواست اضافه می‌شود. با قیمت امروز، تقریباً:

ابزارtypeهر اجرا (دلار)
جست‌وجوی وبweb_search$0.014
جست‌وجو در فایلfile_search$0.0035
اجرای کدcode_interpreter$0.042
ساخت تصویرimage_generation$0.238

توکن‌هایی که نتیجهٔ جست‌وجو به ورودی مدل اضافه می‌کند هم جزو توکن ورودی حساب می‌شوند. هزینهٔ دقیق هر درخواست را با GET /requests/{id} ببینید.

تابع‌های خودتان#

در Responses API تعریف تابع کمی ساده‌تر است: name و parameters مستقیم در خود ابزار می‌آیند و فراخوانی‌ها در خروجی از نوع function_call هستند.

Python function tools
tools = [{
    "type": "function",
    "name": "get_weather",
    "description": "Current weather for a city",
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}]

response = client.responses.create(model="gpt-4.1-mini", input="Weather in Isfahan?", tools=tools)
for item in response.output:
    if item.type == "function_call":
        print(item.name, item.arguments, item.call_id)

نتیجهٔ تابع را با یک بخش function_call_output و همان call_id در درخواست بعدی برگردانید.

پاسخ جریانی#

با stream: true رویدادهای Responses API (مثل response.output_text.delta و در پایان response.completed) همان‌طور که OpenAI می‌فرستد به شما می‌رسند:

Python stream: true
stream = client.responses.create(model="gpt-4.1-mini", input="Write a short product description for a desk lamp.", stream=True)
for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

تفاوت‌ها با OpenAI#

  • نگهداری پاسخ: فیلد store به OpenAI فرستاده نمی‌شود. مطمئن‌ترین راه برای ادامهٔ گفت‌وگو این است که ورودی‌های قبلی را خودتان در درخواست بعدی بفرستید.
  • فایل‌ها و Vector Store: endpointهای بارگذاری فایل (/files، /vector_stores) در گیسو نیستند؛ متن یا تصویر را مستقیم در input بفرستید.
  • پارامتر max_output_tokens مثل max_tokens در Chat Completions، مبلغی را که پیش از درخواست کنار گذاشته می‌شود کم می‌کند.

پاسخ پرسشتان را پیدا نکردید؟

شناسهٔ درخواست (هدر X-Request-Id) را با پرسشتان در تیکت بفرستید تا دقیق بررسی کنیم.

تیکت پشتیبانی