Responses API شکل تازهتر API شرکت OpenAI است: ورودی سادهتر (یک رشته یا فهرستی از بخشها)، ابزارهای داخلی مثل جستوجوی وب، و خروجیای که هم متن و هم کارهای مدل را در یک فهرست میآورد. گیسو درخواست این endpoint را تقریباً همانطور که هست به OpenAI میرساند (تفاوتها در پایین همین صفحه آمدهاند)؛ پس نمونههای Responses API در مستندات OpenAI با عوض کردن نشانی پایه کار میکنند.
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)
const response = await client.responses.create({
model: "gpt-4.1-mini",
instructions: "Answer in Persian.",
input: "Explain the difference between RAM and storage in three short lines.",
});
console.log(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"}]
}'
response = client.responses.create(
model="gpt-4.1-mini",
input="What is the latest stable version of Laravel? Cite the source.",
tools=[{"type": "web_search"}],
)
print(response.output_text)
# Sources the model used are in the output items (annotations of type url_citation).
for item in response.output:
if item.type == "message":
for part in item.content:
for ann in getattr(part, "annotations", []) or []:
print(ann.url)
هزینهٔ ابزارهای داخلی#
علاوه بر توکنها، هر بار که مدل یک ابزار داخلی را اجرا کند، هزینهٔ همان اجرا جدا به صورتحساب همان درخواست اضافه میشود. با قیمت امروز، تقریباً:
| ابزار | 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 هستند.
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 میفرستد به شما میرسند:
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) را با پرسشتان در تیکت بفرستید تا دقیق بررسی کنیم.