Co-authored-by: Zhuohan Li <zhuohan@openai.com> Co-authored-by: Maratyszcza <marat@openai.com> Co-authored-by: Volodymyr Kyrylov <vol@wilab.org.ua>
129 lines
3.8 KiB
Python
129 lines
3.8 KiB
Python
# torchrun --nproc-per-node=4 responses_api.py
|
|
from typing import Literal, Optional, Union
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from .types import (
|
|
FunctionCallItem,
|
|
Item,
|
|
ReasoningItem,
|
|
ResponseObject,
|
|
TextContentItem,
|
|
ReasoningTextContentItem,
|
|
WebSearchCallItem,
|
|
UrlCitation,
|
|
)
|
|
|
|
|
|
class ResponseEvent(BaseModel):
|
|
sequence_number: Optional[int] = 1
|
|
|
|
|
|
class ResponseCreatedEvent(ResponseEvent):
|
|
type: Literal["response.created"]
|
|
response: ResponseObject
|
|
|
|
|
|
class ResponseCompletedEvent(ResponseEvent):
|
|
type: Literal["response.completed"]
|
|
response: ResponseObject
|
|
|
|
|
|
class ResponseOutputTextDelta(ResponseEvent):
|
|
type: Literal["response.output_text.delta"] = "response.output_text.delta"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
delta: str = ""
|
|
logprobs: list = []
|
|
|
|
|
|
class ResponseReasoningSummaryTextDelta(ResponseEvent):
|
|
type: Literal["response.reasoning_summary_text.delta"] = (
|
|
"response.reasoning_summary_text.delta"
|
|
)
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
delta: str = ""
|
|
|
|
|
|
class ResponseReasoningTextDelta(ResponseEvent):
|
|
type: Literal["response.reasoning_text.delta"] = "response.reasoning_text.delta"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
delta: str = ""
|
|
|
|
|
|
class ResponseReasoningTextDone(ResponseEvent):
|
|
type: Literal["response.reasoning_text.done"] = "response.reasoning_text.done"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
text: str = ""
|
|
|
|
|
|
class ResponseOutputItemAdded(ResponseEvent):
|
|
type: Literal["response.output_item.added"] = "response.output_item.added"
|
|
output_index: int = 0
|
|
item: Union[Item, ReasoningItem, FunctionCallItem, WebSearchCallItem]
|
|
|
|
|
|
class ResponseOutputItemDone(ResponseEvent):
|
|
type: Literal["response.output_item.done"] = "response.output_item.done"
|
|
output_index: int = 0
|
|
item: Union[Item, ReasoningItem, FunctionCallItem, WebSearchCallItem]
|
|
|
|
|
|
class ResponseInProgressEvent(ResponseEvent):
|
|
type: Literal["response.in_progress"]
|
|
response: ResponseObject
|
|
|
|
|
|
class ResponseContentPartAdded(ResponseEvent):
|
|
type: Literal["response.content_part.added"] = "response.content_part.added"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
part: Union[TextContentItem, ReasoningTextContentItem]
|
|
|
|
|
|
class ResponseOutputTextDone(ResponseEvent):
|
|
type: Literal["response.output_text.done"] = "response.output_text.done"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
text: str = ""
|
|
logprobs: list = []
|
|
|
|
|
|
class ResponseContentPartDone(ResponseEvent):
|
|
type: Literal["response.content_part.done"] = "response.content_part.done"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
part: Union[TextContentItem, ReasoningTextContentItem]
|
|
|
|
class ResponseOutputTextAnnotationAdded(ResponseEvent):
|
|
type: Literal["response.output_text.annotation.added"] = "response.output_text.annotation.added"
|
|
item_id: str = "item_1234"
|
|
output_index: int = 0
|
|
content_index: int = 0
|
|
annotation_index: int = 0
|
|
annotation: UrlCitation
|
|
|
|
class ResponseWebSearchCallInProgress(ResponseEvent):
|
|
type: Literal["response.web_search_call.in_progress"] = "response.web_search_call.in_progress"
|
|
output_index: int = 0
|
|
item_id: str = "item_1234"
|
|
|
|
class ResponseWebSearchCallSearching(ResponseEvent):
|
|
type: Literal["response.web_search_call.searching"] = "response.web_search_call.searching"
|
|
output_index: int = 0
|
|
item_id: str = "item_1234"
|
|
|
|
class ResponseWebSearchCallCompleted(ResponseEvent):
|
|
type: Literal["response.web_search_call.completed"] = "response.web_search_call.completed"
|
|
output_index: int = 0
|
|
item_id: str = "item_1234" |