Make SubFox production-ready with parallel translation and UI controls
This commit is contained in:
parent
c40b8bed2b
commit
2b1d05f02c
6046 changed files with 798327 additions and 0 deletions
243
.venv/lib/python3.10/site-packages/openai/resources/__init__.py
Normal file
243
.venv/lib/python3.10/site-packages/openai/resources/__init__.py
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .beta import (
|
||||
Beta,
|
||||
AsyncBeta,
|
||||
BetaWithRawResponse,
|
||||
AsyncBetaWithRawResponse,
|
||||
BetaWithStreamingResponse,
|
||||
AsyncBetaWithStreamingResponse,
|
||||
)
|
||||
from .chat import (
|
||||
Chat,
|
||||
AsyncChat,
|
||||
ChatWithRawResponse,
|
||||
AsyncChatWithRawResponse,
|
||||
ChatWithStreamingResponse,
|
||||
AsyncChatWithStreamingResponse,
|
||||
)
|
||||
from .audio import (
|
||||
Audio,
|
||||
AsyncAudio,
|
||||
AudioWithRawResponse,
|
||||
AsyncAudioWithRawResponse,
|
||||
AudioWithStreamingResponse,
|
||||
AsyncAudioWithStreamingResponse,
|
||||
)
|
||||
from .evals import (
|
||||
Evals,
|
||||
AsyncEvals,
|
||||
EvalsWithRawResponse,
|
||||
AsyncEvalsWithRawResponse,
|
||||
EvalsWithStreamingResponse,
|
||||
AsyncEvalsWithStreamingResponse,
|
||||
)
|
||||
from .files import (
|
||||
Files,
|
||||
AsyncFiles,
|
||||
FilesWithRawResponse,
|
||||
AsyncFilesWithRawResponse,
|
||||
FilesWithStreamingResponse,
|
||||
AsyncFilesWithStreamingResponse,
|
||||
)
|
||||
from .images import (
|
||||
Images,
|
||||
AsyncImages,
|
||||
ImagesWithRawResponse,
|
||||
AsyncImagesWithRawResponse,
|
||||
ImagesWithStreamingResponse,
|
||||
AsyncImagesWithStreamingResponse,
|
||||
)
|
||||
from .models import (
|
||||
Models,
|
||||
AsyncModels,
|
||||
ModelsWithRawResponse,
|
||||
AsyncModelsWithRawResponse,
|
||||
ModelsWithStreamingResponse,
|
||||
AsyncModelsWithStreamingResponse,
|
||||
)
|
||||
from .skills import (
|
||||
Skills,
|
||||
AsyncSkills,
|
||||
SkillsWithRawResponse,
|
||||
AsyncSkillsWithRawResponse,
|
||||
SkillsWithStreamingResponse,
|
||||
AsyncSkillsWithStreamingResponse,
|
||||
)
|
||||
from .videos import (
|
||||
Videos,
|
||||
AsyncVideos,
|
||||
VideosWithRawResponse,
|
||||
AsyncVideosWithRawResponse,
|
||||
VideosWithStreamingResponse,
|
||||
AsyncVideosWithStreamingResponse,
|
||||
)
|
||||
from .batches import (
|
||||
Batches,
|
||||
AsyncBatches,
|
||||
BatchesWithRawResponse,
|
||||
AsyncBatchesWithRawResponse,
|
||||
BatchesWithStreamingResponse,
|
||||
AsyncBatchesWithStreamingResponse,
|
||||
)
|
||||
from .uploads import (
|
||||
Uploads,
|
||||
AsyncUploads,
|
||||
UploadsWithRawResponse,
|
||||
AsyncUploadsWithRawResponse,
|
||||
UploadsWithStreamingResponse,
|
||||
AsyncUploadsWithStreamingResponse,
|
||||
)
|
||||
from .containers import (
|
||||
Containers,
|
||||
AsyncContainers,
|
||||
ContainersWithRawResponse,
|
||||
AsyncContainersWithRawResponse,
|
||||
ContainersWithStreamingResponse,
|
||||
AsyncContainersWithStreamingResponse,
|
||||
)
|
||||
from .embeddings import (
|
||||
Embeddings,
|
||||
AsyncEmbeddings,
|
||||
EmbeddingsWithRawResponse,
|
||||
AsyncEmbeddingsWithRawResponse,
|
||||
EmbeddingsWithStreamingResponse,
|
||||
AsyncEmbeddingsWithStreamingResponse,
|
||||
)
|
||||
from .completions import (
|
||||
Completions,
|
||||
AsyncCompletions,
|
||||
CompletionsWithRawResponse,
|
||||
AsyncCompletionsWithRawResponse,
|
||||
CompletionsWithStreamingResponse,
|
||||
AsyncCompletionsWithStreamingResponse,
|
||||
)
|
||||
from .fine_tuning import (
|
||||
FineTuning,
|
||||
AsyncFineTuning,
|
||||
FineTuningWithRawResponse,
|
||||
AsyncFineTuningWithRawResponse,
|
||||
FineTuningWithStreamingResponse,
|
||||
AsyncFineTuningWithStreamingResponse,
|
||||
)
|
||||
from .moderations import (
|
||||
Moderations,
|
||||
AsyncModerations,
|
||||
ModerationsWithRawResponse,
|
||||
AsyncModerationsWithRawResponse,
|
||||
ModerationsWithStreamingResponse,
|
||||
AsyncModerationsWithStreamingResponse,
|
||||
)
|
||||
from .vector_stores import (
|
||||
VectorStores,
|
||||
AsyncVectorStores,
|
||||
VectorStoresWithRawResponse,
|
||||
AsyncVectorStoresWithRawResponse,
|
||||
VectorStoresWithStreamingResponse,
|
||||
AsyncVectorStoresWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Completions",
|
||||
"AsyncCompletions",
|
||||
"CompletionsWithRawResponse",
|
||||
"AsyncCompletionsWithRawResponse",
|
||||
"CompletionsWithStreamingResponse",
|
||||
"AsyncCompletionsWithStreamingResponse",
|
||||
"Chat",
|
||||
"AsyncChat",
|
||||
"ChatWithRawResponse",
|
||||
"AsyncChatWithRawResponse",
|
||||
"ChatWithStreamingResponse",
|
||||
"AsyncChatWithStreamingResponse",
|
||||
"Embeddings",
|
||||
"AsyncEmbeddings",
|
||||
"EmbeddingsWithRawResponse",
|
||||
"AsyncEmbeddingsWithRawResponse",
|
||||
"EmbeddingsWithStreamingResponse",
|
||||
"AsyncEmbeddingsWithStreamingResponse",
|
||||
"Files",
|
||||
"AsyncFiles",
|
||||
"FilesWithRawResponse",
|
||||
"AsyncFilesWithRawResponse",
|
||||
"FilesWithStreamingResponse",
|
||||
"AsyncFilesWithStreamingResponse",
|
||||
"Images",
|
||||
"AsyncImages",
|
||||
"ImagesWithRawResponse",
|
||||
"AsyncImagesWithRawResponse",
|
||||
"ImagesWithStreamingResponse",
|
||||
"AsyncImagesWithStreamingResponse",
|
||||
"Audio",
|
||||
"AsyncAudio",
|
||||
"AudioWithRawResponse",
|
||||
"AsyncAudioWithRawResponse",
|
||||
"AudioWithStreamingResponse",
|
||||
"AsyncAudioWithStreamingResponse",
|
||||
"Moderations",
|
||||
"AsyncModerations",
|
||||
"ModerationsWithRawResponse",
|
||||
"AsyncModerationsWithRawResponse",
|
||||
"ModerationsWithStreamingResponse",
|
||||
"AsyncModerationsWithStreamingResponse",
|
||||
"Models",
|
||||
"AsyncModels",
|
||||
"ModelsWithRawResponse",
|
||||
"AsyncModelsWithRawResponse",
|
||||
"ModelsWithStreamingResponse",
|
||||
"AsyncModelsWithStreamingResponse",
|
||||
"FineTuning",
|
||||
"AsyncFineTuning",
|
||||
"FineTuningWithRawResponse",
|
||||
"AsyncFineTuningWithRawResponse",
|
||||
"FineTuningWithStreamingResponse",
|
||||
"AsyncFineTuningWithStreamingResponse",
|
||||
"VectorStores",
|
||||
"AsyncVectorStores",
|
||||
"VectorStoresWithRawResponse",
|
||||
"AsyncVectorStoresWithRawResponse",
|
||||
"VectorStoresWithStreamingResponse",
|
||||
"AsyncVectorStoresWithStreamingResponse",
|
||||
"Beta",
|
||||
"AsyncBeta",
|
||||
"BetaWithRawResponse",
|
||||
"AsyncBetaWithRawResponse",
|
||||
"BetaWithStreamingResponse",
|
||||
"AsyncBetaWithStreamingResponse",
|
||||
"Batches",
|
||||
"AsyncBatches",
|
||||
"BatchesWithRawResponse",
|
||||
"AsyncBatchesWithRawResponse",
|
||||
"BatchesWithStreamingResponse",
|
||||
"AsyncBatchesWithStreamingResponse",
|
||||
"Uploads",
|
||||
"AsyncUploads",
|
||||
"UploadsWithRawResponse",
|
||||
"AsyncUploadsWithRawResponse",
|
||||
"UploadsWithStreamingResponse",
|
||||
"AsyncUploadsWithStreamingResponse",
|
||||
"Evals",
|
||||
"AsyncEvals",
|
||||
"EvalsWithRawResponse",
|
||||
"AsyncEvalsWithRawResponse",
|
||||
"EvalsWithStreamingResponse",
|
||||
"AsyncEvalsWithStreamingResponse",
|
||||
"Containers",
|
||||
"AsyncContainers",
|
||||
"ContainersWithRawResponse",
|
||||
"AsyncContainersWithRawResponse",
|
||||
"ContainersWithStreamingResponse",
|
||||
"AsyncContainersWithStreamingResponse",
|
||||
"Skills",
|
||||
"AsyncSkills",
|
||||
"SkillsWithRawResponse",
|
||||
"AsyncSkillsWithRawResponse",
|
||||
"SkillsWithStreamingResponse",
|
||||
"AsyncSkillsWithStreamingResponse",
|
||||
"Videos",
|
||||
"AsyncVideos",
|
||||
"VideosWithRawResponse",
|
||||
"AsyncVideosWithRawResponse",
|
||||
"VideosWithStreamingResponse",
|
||||
"AsyncVideosWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,61 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .audio import (
|
||||
Audio,
|
||||
AsyncAudio,
|
||||
AudioWithRawResponse,
|
||||
AsyncAudioWithRawResponse,
|
||||
AudioWithStreamingResponse,
|
||||
AsyncAudioWithStreamingResponse,
|
||||
)
|
||||
from .speech import (
|
||||
Speech,
|
||||
AsyncSpeech,
|
||||
SpeechWithRawResponse,
|
||||
AsyncSpeechWithRawResponse,
|
||||
SpeechWithStreamingResponse,
|
||||
AsyncSpeechWithStreamingResponse,
|
||||
)
|
||||
from .translations import (
|
||||
Translations,
|
||||
AsyncTranslations,
|
||||
TranslationsWithRawResponse,
|
||||
AsyncTranslationsWithRawResponse,
|
||||
TranslationsWithStreamingResponse,
|
||||
AsyncTranslationsWithStreamingResponse,
|
||||
)
|
||||
from .transcriptions import (
|
||||
Transcriptions,
|
||||
AsyncTranscriptions,
|
||||
TranscriptionsWithRawResponse,
|
||||
AsyncTranscriptionsWithRawResponse,
|
||||
TranscriptionsWithStreamingResponse,
|
||||
AsyncTranscriptionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Transcriptions",
|
||||
"AsyncTranscriptions",
|
||||
"TranscriptionsWithRawResponse",
|
||||
"AsyncTranscriptionsWithRawResponse",
|
||||
"TranscriptionsWithStreamingResponse",
|
||||
"AsyncTranscriptionsWithStreamingResponse",
|
||||
"Translations",
|
||||
"AsyncTranslations",
|
||||
"TranslationsWithRawResponse",
|
||||
"AsyncTranslationsWithRawResponse",
|
||||
"TranslationsWithStreamingResponse",
|
||||
"AsyncTranslationsWithStreamingResponse",
|
||||
"Speech",
|
||||
"AsyncSpeech",
|
||||
"SpeechWithRawResponse",
|
||||
"AsyncSpeechWithRawResponse",
|
||||
"SpeechWithStreamingResponse",
|
||||
"AsyncSpeechWithStreamingResponse",
|
||||
"Audio",
|
||||
"AsyncAudio",
|
||||
"AudioWithRawResponse",
|
||||
"AsyncAudioWithRawResponse",
|
||||
"AudioWithStreamingResponse",
|
||||
"AsyncAudioWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,184 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from .speech import (
|
||||
Speech,
|
||||
AsyncSpeech,
|
||||
SpeechWithRawResponse,
|
||||
AsyncSpeechWithRawResponse,
|
||||
SpeechWithStreamingResponse,
|
||||
AsyncSpeechWithStreamingResponse,
|
||||
)
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from .translations import (
|
||||
Translations,
|
||||
AsyncTranslations,
|
||||
TranslationsWithRawResponse,
|
||||
AsyncTranslationsWithRawResponse,
|
||||
TranslationsWithStreamingResponse,
|
||||
AsyncTranslationsWithStreamingResponse,
|
||||
)
|
||||
from .transcriptions import (
|
||||
Transcriptions,
|
||||
AsyncTranscriptions,
|
||||
TranscriptionsWithRawResponse,
|
||||
AsyncTranscriptionsWithRawResponse,
|
||||
TranscriptionsWithStreamingResponse,
|
||||
AsyncTranscriptionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = ["Audio", "AsyncAudio"]
|
||||
|
||||
|
||||
class Audio(SyncAPIResource):
|
||||
@cached_property
|
||||
def transcriptions(self) -> Transcriptions:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return Transcriptions(self._client)
|
||||
|
||||
@cached_property
|
||||
def translations(self) -> Translations:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return Translations(self._client)
|
||||
|
||||
@cached_property
|
||||
def speech(self) -> Speech:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return Speech(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AudioWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AudioWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AudioWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AudioWithStreamingResponse(self)
|
||||
|
||||
|
||||
class AsyncAudio(AsyncAPIResource):
|
||||
@cached_property
|
||||
def transcriptions(self) -> AsyncTranscriptions:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncTranscriptions(self._client)
|
||||
|
||||
@cached_property
|
||||
def translations(self) -> AsyncTranslations:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncTranslations(self._client)
|
||||
|
||||
@cached_property
|
||||
def speech(self) -> AsyncSpeech:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncSpeech(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncAudioWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncAudioWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncAudioWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncAudioWithStreamingResponse(self)
|
||||
|
||||
|
||||
class AudioWithRawResponse:
|
||||
def __init__(self, audio: Audio) -> None:
|
||||
self._audio = audio
|
||||
|
||||
@cached_property
|
||||
def transcriptions(self) -> TranscriptionsWithRawResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return TranscriptionsWithRawResponse(self._audio.transcriptions)
|
||||
|
||||
@cached_property
|
||||
def translations(self) -> TranslationsWithRawResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return TranslationsWithRawResponse(self._audio.translations)
|
||||
|
||||
@cached_property
|
||||
def speech(self) -> SpeechWithRawResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return SpeechWithRawResponse(self._audio.speech)
|
||||
|
||||
|
||||
class AsyncAudioWithRawResponse:
|
||||
def __init__(self, audio: AsyncAudio) -> None:
|
||||
self._audio = audio
|
||||
|
||||
@cached_property
|
||||
def transcriptions(self) -> AsyncTranscriptionsWithRawResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncTranscriptionsWithRawResponse(self._audio.transcriptions)
|
||||
|
||||
@cached_property
|
||||
def translations(self) -> AsyncTranslationsWithRawResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncTranslationsWithRawResponse(self._audio.translations)
|
||||
|
||||
@cached_property
|
||||
def speech(self) -> AsyncSpeechWithRawResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncSpeechWithRawResponse(self._audio.speech)
|
||||
|
||||
|
||||
class AudioWithStreamingResponse:
|
||||
def __init__(self, audio: Audio) -> None:
|
||||
self._audio = audio
|
||||
|
||||
@cached_property
|
||||
def transcriptions(self) -> TranscriptionsWithStreamingResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return TranscriptionsWithStreamingResponse(self._audio.transcriptions)
|
||||
|
||||
@cached_property
|
||||
def translations(self) -> TranslationsWithStreamingResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return TranslationsWithStreamingResponse(self._audio.translations)
|
||||
|
||||
@cached_property
|
||||
def speech(self) -> SpeechWithStreamingResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return SpeechWithStreamingResponse(self._audio.speech)
|
||||
|
||||
|
||||
class AsyncAudioWithStreamingResponse:
|
||||
def __init__(self, audio: AsyncAudio) -> None:
|
||||
self._audio = audio
|
||||
|
||||
@cached_property
|
||||
def transcriptions(self) -> AsyncTranscriptionsWithStreamingResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncTranscriptionsWithStreamingResponse(self._audio.transcriptions)
|
||||
|
||||
@cached_property
|
||||
def translations(self) -> AsyncTranslationsWithStreamingResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncTranslationsWithStreamingResponse(self._audio.translations)
|
||||
|
||||
@cached_property
|
||||
def speech(self) -> AsyncSpeechWithStreamingResponse:
|
||||
"""Turn audio into text or text into audio."""
|
||||
return AsyncSpeechWithStreamingResponse(self._audio.speech)
|
||||
|
|
@ -0,0 +1,263 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Union
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from ... import _legacy_response
|
||||
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ..._utils import maybe_transform, async_maybe_transform
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ..._response import (
|
||||
StreamedBinaryAPIResponse,
|
||||
AsyncStreamedBinaryAPIResponse,
|
||||
to_custom_streamed_response_wrapper,
|
||||
async_to_custom_streamed_response_wrapper,
|
||||
)
|
||||
from ...types.audio import speech_create_params
|
||||
from ..._base_client import make_request_options
|
||||
from ...types.audio.speech_model import SpeechModel
|
||||
|
||||
__all__ = ["Speech", "AsyncSpeech"]
|
||||
|
||||
|
||||
class Speech(SyncAPIResource):
|
||||
"""Turn audio into text or text into audio."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> SpeechWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return SpeechWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> SpeechWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return SpeechWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
input: str,
|
||||
model: Union[str, SpeechModel],
|
||||
voice: speech_create_params.Voice,
|
||||
instructions: str | Omit = omit,
|
||||
response_format: Literal["mp3", "opus", "aac", "flac", "wav", "pcm"] | Omit = omit,
|
||||
speed: float | Omit = omit,
|
||||
stream_format: Literal["sse", "audio"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> _legacy_response.HttpxBinaryResponseContent:
|
||||
"""
|
||||
Generates audio from the input text.
|
||||
|
||||
Returns the audio file content, or a stream of audio events.
|
||||
|
||||
Args:
|
||||
input: The text to generate audio for. The maximum length is 4096 characters.
|
||||
|
||||
model:
|
||||
One of the available [TTS models](https://platform.openai.com/docs/models#tts):
|
||||
`tts-1`, `tts-1-hd`, `gpt-4o-mini-tts`, or `gpt-4o-mini-tts-2025-12-15`.
|
||||
|
||||
voice: The voice to use when generating the audio. Supported built-in voices are
|
||||
`alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`,
|
||||
`shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice
|
||||
object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
|
||||
voices are available in the
|
||||
[Text to speech guide](https://platform.openai.com/docs/guides/text-to-speech#voice-options).
|
||||
|
||||
instructions: Control the voice of your generated audio with additional instructions. Does not
|
||||
work with `tts-1` or `tts-1-hd`.
|
||||
|
||||
response_format: The format to audio in. Supported formats are `mp3`, `opus`, `aac`, `flac`,
|
||||
`wav`, and `pcm`.
|
||||
|
||||
speed: The speed of the generated audio. Select a value from `0.25` to `4.0`. `1.0` is
|
||||
the default.
|
||||
|
||||
stream_format: The format to stream the audio in. Supported formats are `sse` and `audio`.
|
||||
`sse` is not supported for `tts-1` or `tts-1-hd`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
|
||||
return self._post(
|
||||
"/audio/speech",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"input": input,
|
||||
"model": model,
|
||||
"voice": voice,
|
||||
"instructions": instructions,
|
||||
"response_format": response_format,
|
||||
"speed": speed,
|
||||
"stream_format": stream_format,
|
||||
},
|
||||
speech_create_params.SpeechCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_legacy_response.HttpxBinaryResponseContent,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSpeech(AsyncAPIResource):
|
||||
"""Turn audio into text or text into audio."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncSpeechWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncSpeechWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncSpeechWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncSpeechWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
input: str,
|
||||
model: Union[str, SpeechModel],
|
||||
voice: speech_create_params.Voice,
|
||||
instructions: str | Omit = omit,
|
||||
response_format: Literal["mp3", "opus", "aac", "flac", "wav", "pcm"] | Omit = omit,
|
||||
speed: float | Omit = omit,
|
||||
stream_format: Literal["sse", "audio"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> _legacy_response.HttpxBinaryResponseContent:
|
||||
"""
|
||||
Generates audio from the input text.
|
||||
|
||||
Returns the audio file content, or a stream of audio events.
|
||||
|
||||
Args:
|
||||
input: The text to generate audio for. The maximum length is 4096 characters.
|
||||
|
||||
model:
|
||||
One of the available [TTS models](https://platform.openai.com/docs/models#tts):
|
||||
`tts-1`, `tts-1-hd`, `gpt-4o-mini-tts`, or `gpt-4o-mini-tts-2025-12-15`.
|
||||
|
||||
voice: The voice to use when generating the audio. Supported built-in voices are
|
||||
`alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`,
|
||||
`shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice
|
||||
object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
|
||||
voices are available in the
|
||||
[Text to speech guide](https://platform.openai.com/docs/guides/text-to-speech#voice-options).
|
||||
|
||||
instructions: Control the voice of your generated audio with additional instructions. Does not
|
||||
work with `tts-1` or `tts-1-hd`.
|
||||
|
||||
response_format: The format to audio in. Supported formats are `mp3`, `opus`, `aac`, `flac`,
|
||||
`wav`, and `pcm`.
|
||||
|
||||
speed: The speed of the generated audio. Select a value from `0.25` to `4.0`. `1.0` is
|
||||
the default.
|
||||
|
||||
stream_format: The format to stream the audio in. Supported formats are `sse` and `audio`.
|
||||
`sse` is not supported for `tts-1` or `tts-1-hd`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"Accept": "application/octet-stream", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
"/audio/speech",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"input": input,
|
||||
"model": model,
|
||||
"voice": voice,
|
||||
"instructions": instructions,
|
||||
"response_format": response_format,
|
||||
"speed": speed,
|
||||
"stream_format": stream_format,
|
||||
},
|
||||
speech_create_params.SpeechCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_legacy_response.HttpxBinaryResponseContent,
|
||||
)
|
||||
|
||||
|
||||
class SpeechWithRawResponse:
|
||||
def __init__(self, speech: Speech) -> None:
|
||||
self._speech = speech
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
speech.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSpeechWithRawResponse:
|
||||
def __init__(self, speech: AsyncSpeech) -> None:
|
||||
self._speech = speech
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
speech.create,
|
||||
)
|
||||
|
||||
|
||||
class SpeechWithStreamingResponse:
|
||||
def __init__(self, speech: Speech) -> None:
|
||||
self._speech = speech
|
||||
|
||||
self.create = to_custom_streamed_response_wrapper(
|
||||
speech.create,
|
||||
StreamedBinaryAPIResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSpeechWithStreamingResponse:
|
||||
def __init__(self, speech: AsyncSpeech) -> None:
|
||||
self._speech = speech
|
||||
|
||||
self.create = async_to_custom_streamed_response_wrapper(
|
||||
speech.create,
|
||||
AsyncStreamedBinaryAPIResponse,
|
||||
)
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,371 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Union, Mapping, cast
|
||||
from typing_extensions import Literal, overload, assert_never
|
||||
|
||||
import httpx
|
||||
|
||||
from ... import _legacy_response
|
||||
from ..._types import Body, Omit, Query, Headers, NotGiven, FileTypes, omit, not_given
|
||||
from ..._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ...types.audio import translation_create_params
|
||||
from ..._base_client import make_request_options
|
||||
from ...types.audio_model import AudioModel
|
||||
from ...types.audio.translation import Translation
|
||||
from ...types.audio_response_format import AudioResponseFormat
|
||||
from ...types.audio.translation_verbose import TranslationVerbose
|
||||
|
||||
__all__ = ["Translations", "AsyncTranslations"]
|
||||
|
||||
log: logging.Logger = logging.getLogger("openai.audio.transcriptions")
|
||||
|
||||
|
||||
class Translations(SyncAPIResource):
|
||||
"""Turn audio into text or text into audio."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> TranslationsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return TranslationsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> TranslationsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return TranslationsWithStreamingResponse(self)
|
||||
|
||||
@overload
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
response_format: Union[Literal["json"], Omit] = omit,
|
||||
prompt: str | Omit = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Translation: ...
|
||||
|
||||
@overload
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
response_format: Literal["verbose_json"],
|
||||
prompt: str | Omit = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> TranslationVerbose: ...
|
||||
|
||||
@overload
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
response_format: Literal["text", "srt", "vtt"],
|
||||
prompt: str | Omit = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> str: ...
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
prompt: str | Omit = omit,
|
||||
response_format: Union[Literal["json", "text", "srt", "verbose_json", "vtt"], Omit] = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Translation | TranslationVerbose | str:
|
||||
"""
|
||||
Translates audio into English.
|
||||
|
||||
Args:
|
||||
file: The audio file object (not file name) translate, in one of these formats: flac,
|
||||
mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.
|
||||
|
||||
model: ID of the model to use. Only `whisper-1` (which is powered by our open source
|
||||
Whisper V2 model) is currently available.
|
||||
|
||||
prompt: An optional text to guide the model's style or continue a previous audio
|
||||
segment. The
|
||||
[prompt](https://platform.openai.com/docs/guides/speech-to-text#prompting)
|
||||
should be in English.
|
||||
|
||||
response_format: The format of the output, in one of these options: `json`, `text`, `srt`,
|
||||
`verbose_json`, or `vtt`.
|
||||
|
||||
temperature: The sampling temperature, between 0 and 1. Higher values like 0.8 will make the
|
||||
output more random, while lower values like 0.2 will make it more focused and
|
||||
deterministic. If set to 0, the model will use
|
||||
[log probability](https://en.wikipedia.org/wiki/Log_probability) to
|
||||
automatically increase the temperature until certain thresholds are hit.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
body = deepcopy_minimal(
|
||||
{
|
||||
"file": file,
|
||||
"model": model,
|
||||
"prompt": prompt,
|
||||
"response_format": response_format,
|
||||
"temperature": temperature,
|
||||
}
|
||||
)
|
||||
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
||||
# It should be noted that the actual Content-Type header that will be
|
||||
# sent to the server will contain a `boundary` parameter, e.g.
|
||||
# multipart/form-data; boundary=---abc--
|
||||
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
||||
return self._post( # type: ignore[return-value]
|
||||
"/audio/translations",
|
||||
body=maybe_transform(body, translation_create_params.TranslationCreateParams),
|
||||
files=files,
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_get_response_format_type(response_format),
|
||||
)
|
||||
|
||||
|
||||
class AsyncTranslations(AsyncAPIResource):
|
||||
"""Turn audio into text or text into audio."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncTranslationsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncTranslationsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncTranslationsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncTranslationsWithStreamingResponse(self)
|
||||
|
||||
@overload
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
response_format: Union[Literal["json"], Omit] = omit,
|
||||
prompt: str | Omit = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Translation: ...
|
||||
|
||||
@overload
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
response_format: Literal["verbose_json"],
|
||||
prompt: str | Omit = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> TranslationVerbose: ...
|
||||
|
||||
@overload
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
response_format: Literal["text", "srt", "vtt"],
|
||||
prompt: str | Omit = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> str: ...
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
model: Union[str, AudioModel],
|
||||
prompt: str | Omit = omit,
|
||||
response_format: Union[AudioResponseFormat, Omit] = omit,
|
||||
temperature: float | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Translation | TranslationVerbose | str:
|
||||
"""
|
||||
Translates audio into English.
|
||||
|
||||
Args:
|
||||
file: The audio file object (not file name) translate, in one of these formats: flac,
|
||||
mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.
|
||||
|
||||
model: ID of the model to use. Only `whisper-1` (which is powered by our open source
|
||||
Whisper V2 model) is currently available.
|
||||
|
||||
prompt: An optional text to guide the model's style or continue a previous audio
|
||||
segment. The
|
||||
[prompt](https://platform.openai.com/docs/guides/speech-to-text#prompting)
|
||||
should be in English.
|
||||
|
||||
response_format: The format of the output, in one of these options: `json`, `text`, `srt`,
|
||||
`verbose_json`, or `vtt`.
|
||||
|
||||
temperature: The sampling temperature, between 0 and 1. Higher values like 0.8 will make the
|
||||
output more random, while lower values like 0.2 will make it more focused and
|
||||
deterministic. If set to 0, the model will use
|
||||
[log probability](https://en.wikipedia.org/wiki/Log_probability) to
|
||||
automatically increase the temperature until certain thresholds are hit.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
body = deepcopy_minimal(
|
||||
{
|
||||
"file": file,
|
||||
"model": model,
|
||||
"prompt": prompt,
|
||||
"response_format": response_format,
|
||||
"temperature": temperature,
|
||||
}
|
||||
)
|
||||
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
||||
# It should be noted that the actual Content-Type header that will be
|
||||
# sent to the server will contain a `boundary` parameter, e.g.
|
||||
# multipart/form-data; boundary=---abc--
|
||||
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
"/audio/translations",
|
||||
body=await async_maybe_transform(body, translation_create_params.TranslationCreateParams),
|
||||
files=files,
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_get_response_format_type(response_format),
|
||||
)
|
||||
|
||||
|
||||
class TranslationsWithRawResponse:
|
||||
def __init__(self, translations: Translations) -> None:
|
||||
self._translations = translations
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
translations.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncTranslationsWithRawResponse:
|
||||
def __init__(self, translations: AsyncTranslations) -> None:
|
||||
self._translations = translations
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
translations.create,
|
||||
)
|
||||
|
||||
|
||||
class TranslationsWithStreamingResponse:
|
||||
def __init__(self, translations: Translations) -> None:
|
||||
self._translations = translations
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
translations.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncTranslationsWithStreamingResponse:
|
||||
def __init__(self, translations: AsyncTranslations) -> None:
|
||||
self._translations = translations
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
translations.create,
|
||||
)
|
||||
|
||||
|
||||
def _get_response_format_type(
|
||||
response_format: AudioResponseFormat | Omit,
|
||||
) -> type[Translation | TranslationVerbose | str]:
|
||||
if isinstance(response_format, Omit) or response_format is None: # pyright: ignore[reportUnnecessaryComparison]
|
||||
return Translation
|
||||
|
||||
if response_format == "json":
|
||||
return Translation
|
||||
elif response_format == "verbose_json":
|
||||
return TranslationVerbose
|
||||
elif response_format == "srt" or response_format == "text" or response_format == "vtt":
|
||||
return str
|
||||
elif TYPE_CHECKING and response_format != "diarized_json": # type: ignore[unreachable]
|
||||
assert_never(response_format)
|
||||
else:
|
||||
log.warning("Unexpected audio response format: %s", response_format)
|
||||
return Translation
|
||||
550
.venv/lib/python3.10/site-packages/openai/resources/batches.py
Normal file
550
.venv/lib/python3.10/site-packages/openai/resources/batches.py
Normal file
|
|
@ -0,0 +1,550 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .. import _legacy_response
|
||||
from ..types import batch_list_params, batch_create_params
|
||||
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from .._utils import maybe_transform, async_maybe_transform
|
||||
from .._compat import cached_property
|
||||
from .._resource import SyncAPIResource, AsyncAPIResource
|
||||
from .._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ..pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ..types.batch import Batch
|
||||
from .._base_client import AsyncPaginator, make_request_options
|
||||
from ..types.shared_params.metadata import Metadata
|
||||
|
||||
__all__ = ["Batches", "AsyncBatches"]
|
||||
|
||||
|
||||
class Batches(SyncAPIResource):
|
||||
"""Create large batches of API requests to run asynchronously."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> BatchesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return BatchesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> BatchesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return BatchesWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
completion_window: Literal["24h"],
|
||||
endpoint: Literal[
|
||||
"/v1/responses",
|
||||
"/v1/chat/completions",
|
||||
"/v1/embeddings",
|
||||
"/v1/completions",
|
||||
"/v1/moderations",
|
||||
"/v1/images/generations",
|
||||
"/v1/images/edits",
|
||||
"/v1/videos",
|
||||
],
|
||||
input_file_id: str,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
output_expires_after: batch_create_params.OutputExpiresAfter | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Batch:
|
||||
"""
|
||||
Creates and executes a batch from an uploaded file of requests
|
||||
|
||||
Args:
|
||||
completion_window: The time frame within which the batch should be processed. Currently only `24h`
|
||||
is supported.
|
||||
|
||||
endpoint: The endpoint to be used for all requests in the batch. Currently
|
||||
`/v1/responses`, `/v1/chat/completions`, `/v1/embeddings`, `/v1/completions`,
|
||||
`/v1/moderations`, `/v1/images/generations`, `/v1/images/edits`, and
|
||||
`/v1/videos` are supported. Note that `/v1/embeddings` batches are also
|
||||
restricted to a maximum of 50,000 embedding inputs across all requests in the
|
||||
batch.
|
||||
|
||||
input_file_id: The ID of an uploaded file that contains requests for the new batch.
|
||||
|
||||
See [upload file](https://platform.openai.com/docs/api-reference/files/create)
|
||||
for how to upload a file.
|
||||
|
||||
Your input file must be formatted as a
|
||||
[JSONL file](https://platform.openai.com/docs/api-reference/batch/request-input),
|
||||
and must be uploaded with the purpose `batch`. The file can contain up to 50,000
|
||||
requests, and can be up to 200 MB in size.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
output_expires_after: The expiration policy for the output and/or error file that are generated for a
|
||||
batch.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._post(
|
||||
"/batches",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"completion_window": completion_window,
|
||||
"endpoint": endpoint,
|
||||
"input_file_id": input_file_id,
|
||||
"metadata": metadata,
|
||||
"output_expires_after": output_expires_after,
|
||||
},
|
||||
batch_create_params.BatchCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Batch,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
batch_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Batch:
|
||||
"""
|
||||
Retrieves a batch.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not batch_id:
|
||||
raise ValueError(f"Expected a non-empty value for `batch_id` but received {batch_id!r}")
|
||||
return self._get(
|
||||
f"/batches/{batch_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Batch,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[Batch]:
|
||||
"""List your organization's batches.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/batches",
|
||||
page=SyncCursorPage[Batch],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
},
|
||||
batch_list_params.BatchListParams,
|
||||
),
|
||||
),
|
||||
model=Batch,
|
||||
)
|
||||
|
||||
def cancel(
|
||||
self,
|
||||
batch_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Batch:
|
||||
"""Cancels an in-progress batch.
|
||||
|
||||
The batch will be in status `cancelling` for up to
|
||||
10 minutes, before changing to `cancelled`, where it will have partial results
|
||||
(if any) available in the output file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not batch_id:
|
||||
raise ValueError(f"Expected a non-empty value for `batch_id` but received {batch_id!r}")
|
||||
return self._post(
|
||||
f"/batches/{batch_id}/cancel",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Batch,
|
||||
)
|
||||
|
||||
|
||||
class AsyncBatches(AsyncAPIResource):
|
||||
"""Create large batches of API requests to run asynchronously."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncBatchesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncBatchesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncBatchesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncBatchesWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
completion_window: Literal["24h"],
|
||||
endpoint: Literal[
|
||||
"/v1/responses",
|
||||
"/v1/chat/completions",
|
||||
"/v1/embeddings",
|
||||
"/v1/completions",
|
||||
"/v1/moderations",
|
||||
"/v1/images/generations",
|
||||
"/v1/images/edits",
|
||||
"/v1/videos",
|
||||
],
|
||||
input_file_id: str,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
output_expires_after: batch_create_params.OutputExpiresAfter | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Batch:
|
||||
"""
|
||||
Creates and executes a batch from an uploaded file of requests
|
||||
|
||||
Args:
|
||||
completion_window: The time frame within which the batch should be processed. Currently only `24h`
|
||||
is supported.
|
||||
|
||||
endpoint: The endpoint to be used for all requests in the batch. Currently
|
||||
`/v1/responses`, `/v1/chat/completions`, `/v1/embeddings`, `/v1/completions`,
|
||||
`/v1/moderations`, `/v1/images/generations`, `/v1/images/edits`, and
|
||||
`/v1/videos` are supported. Note that `/v1/embeddings` batches are also
|
||||
restricted to a maximum of 50,000 embedding inputs across all requests in the
|
||||
batch.
|
||||
|
||||
input_file_id: The ID of an uploaded file that contains requests for the new batch.
|
||||
|
||||
See [upload file](https://platform.openai.com/docs/api-reference/files/create)
|
||||
for how to upload a file.
|
||||
|
||||
Your input file must be formatted as a
|
||||
[JSONL file](https://platform.openai.com/docs/api-reference/batch/request-input),
|
||||
and must be uploaded with the purpose `batch`. The file can contain up to 50,000
|
||||
requests, and can be up to 200 MB in size.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
output_expires_after: The expiration policy for the output and/or error file that are generated for a
|
||||
batch.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return await self._post(
|
||||
"/batches",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"completion_window": completion_window,
|
||||
"endpoint": endpoint,
|
||||
"input_file_id": input_file_id,
|
||||
"metadata": metadata,
|
||||
"output_expires_after": output_expires_after,
|
||||
},
|
||||
batch_create_params.BatchCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Batch,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
batch_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Batch:
|
||||
"""
|
||||
Retrieves a batch.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not batch_id:
|
||||
raise ValueError(f"Expected a non-empty value for `batch_id` but received {batch_id!r}")
|
||||
return await self._get(
|
||||
f"/batches/{batch_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Batch,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[Batch, AsyncCursorPage[Batch]]:
|
||||
"""List your organization's batches.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/batches",
|
||||
page=AsyncCursorPage[Batch],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
},
|
||||
batch_list_params.BatchListParams,
|
||||
),
|
||||
),
|
||||
model=Batch,
|
||||
)
|
||||
|
||||
async def cancel(
|
||||
self,
|
||||
batch_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Batch:
|
||||
"""Cancels an in-progress batch.
|
||||
|
||||
The batch will be in status `cancelling` for up to
|
||||
10 minutes, before changing to `cancelled`, where it will have partial results
|
||||
(if any) available in the output file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not batch_id:
|
||||
raise ValueError(f"Expected a non-empty value for `batch_id` but received {batch_id!r}")
|
||||
return await self._post(
|
||||
f"/batches/{batch_id}/cancel",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Batch,
|
||||
)
|
||||
|
||||
|
||||
class BatchesWithRawResponse:
|
||||
def __init__(self, batches: Batches) -> None:
|
||||
self._batches = batches
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
batches.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
batches.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
batches.list,
|
||||
)
|
||||
self.cancel = _legacy_response.to_raw_response_wrapper(
|
||||
batches.cancel,
|
||||
)
|
||||
|
||||
|
||||
class AsyncBatchesWithRawResponse:
|
||||
def __init__(self, batches: AsyncBatches) -> None:
|
||||
self._batches = batches
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
batches.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
batches.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
batches.list,
|
||||
)
|
||||
self.cancel = _legacy_response.async_to_raw_response_wrapper(
|
||||
batches.cancel,
|
||||
)
|
||||
|
||||
|
||||
class BatchesWithStreamingResponse:
|
||||
def __init__(self, batches: Batches) -> None:
|
||||
self._batches = batches
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
batches.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
batches.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
batches.list,
|
||||
)
|
||||
self.cancel = to_streamed_response_wrapper(
|
||||
batches.cancel,
|
||||
)
|
||||
|
||||
|
||||
class AsyncBatchesWithStreamingResponse:
|
||||
def __init__(self, batches: AsyncBatches) -> None:
|
||||
self._batches = batches
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
batches.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
batches.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
batches.list,
|
||||
)
|
||||
self.cancel = async_to_streamed_response_wrapper(
|
||||
batches.cancel,
|
||||
)
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .beta import (
|
||||
Beta,
|
||||
AsyncBeta,
|
||||
BetaWithRawResponse,
|
||||
AsyncBetaWithRawResponse,
|
||||
BetaWithStreamingResponse,
|
||||
AsyncBetaWithStreamingResponse,
|
||||
)
|
||||
from .chatkit import (
|
||||
ChatKit,
|
||||
AsyncChatKit,
|
||||
ChatKitWithRawResponse,
|
||||
AsyncChatKitWithRawResponse,
|
||||
ChatKitWithStreamingResponse,
|
||||
AsyncChatKitWithStreamingResponse,
|
||||
)
|
||||
from .threads import (
|
||||
Threads,
|
||||
AsyncThreads,
|
||||
ThreadsWithRawResponse,
|
||||
AsyncThreadsWithRawResponse,
|
||||
ThreadsWithStreamingResponse,
|
||||
AsyncThreadsWithStreamingResponse,
|
||||
)
|
||||
from .assistants import (
|
||||
Assistants,
|
||||
AsyncAssistants,
|
||||
AssistantsWithRawResponse,
|
||||
AsyncAssistantsWithRawResponse,
|
||||
AssistantsWithStreamingResponse,
|
||||
AsyncAssistantsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"ChatKit",
|
||||
"AsyncChatKit",
|
||||
"ChatKitWithRawResponse",
|
||||
"AsyncChatKitWithRawResponse",
|
||||
"ChatKitWithStreamingResponse",
|
||||
"AsyncChatKitWithStreamingResponse",
|
||||
"Assistants",
|
||||
"AsyncAssistants",
|
||||
"AssistantsWithRawResponse",
|
||||
"AsyncAssistantsWithRawResponse",
|
||||
"AssistantsWithStreamingResponse",
|
||||
"AsyncAssistantsWithStreamingResponse",
|
||||
"Threads",
|
||||
"AsyncThreads",
|
||||
"ThreadsWithRawResponse",
|
||||
"AsyncThreadsWithRawResponse",
|
||||
"ThreadsWithStreamingResponse",
|
||||
"AsyncThreadsWithStreamingResponse",
|
||||
"Beta",
|
||||
"AsyncBeta",
|
||||
"BetaWithRawResponse",
|
||||
"AsyncBetaWithRawResponse",
|
||||
"BetaWithStreamingResponse",
|
||||
"AsyncBetaWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
199
.venv/lib/python3.10/site-packages/openai/resources/beta/beta.py
Normal file
199
.venv/lib/python3.10/site-packages/openai/resources/beta/beta.py
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from ..._compat import cached_property
|
||||
from .assistants import (
|
||||
Assistants,
|
||||
AsyncAssistants,
|
||||
AssistantsWithRawResponse,
|
||||
AsyncAssistantsWithRawResponse,
|
||||
AssistantsWithStreamingResponse,
|
||||
AsyncAssistantsWithStreamingResponse,
|
||||
)
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from .chatkit.chatkit import (
|
||||
ChatKit,
|
||||
AsyncChatKit,
|
||||
ChatKitWithRawResponse,
|
||||
AsyncChatKitWithRawResponse,
|
||||
ChatKitWithStreamingResponse,
|
||||
AsyncChatKitWithStreamingResponse,
|
||||
)
|
||||
from .threads.threads import (
|
||||
Threads,
|
||||
AsyncThreads,
|
||||
ThreadsWithRawResponse,
|
||||
AsyncThreadsWithRawResponse,
|
||||
ThreadsWithStreamingResponse,
|
||||
AsyncThreadsWithStreamingResponse,
|
||||
)
|
||||
from ...resources.chat import Chat, AsyncChat
|
||||
from .realtime.realtime import (
|
||||
Realtime,
|
||||
AsyncRealtime,
|
||||
)
|
||||
|
||||
__all__ = ["Beta", "AsyncBeta"]
|
||||
|
||||
|
||||
class Beta(SyncAPIResource):
|
||||
@cached_property
|
||||
def chat(self) -> Chat:
|
||||
return Chat(self._client)
|
||||
|
||||
@cached_property
|
||||
def realtime(self) -> Realtime:
|
||||
return Realtime(self._client)
|
||||
|
||||
@cached_property
|
||||
def chatkit(self) -> ChatKit:
|
||||
return ChatKit(self._client)
|
||||
|
||||
@cached_property
|
||||
def assistants(self) -> Assistants:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return Assistants(self._client)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> Threads:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return Threads(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> BetaWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return BetaWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> BetaWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return BetaWithStreamingResponse(self)
|
||||
|
||||
|
||||
class AsyncBeta(AsyncAPIResource):
|
||||
@cached_property
|
||||
def chat(self) -> AsyncChat:
|
||||
return AsyncChat(self._client)
|
||||
|
||||
@cached_property
|
||||
def realtime(self) -> AsyncRealtime:
|
||||
return AsyncRealtime(self._client)
|
||||
|
||||
@cached_property
|
||||
def chatkit(self) -> AsyncChatKit:
|
||||
return AsyncChatKit(self._client)
|
||||
|
||||
@cached_property
|
||||
def assistants(self) -> AsyncAssistants:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AsyncAssistants(self._client)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> AsyncThreads:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AsyncThreads(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncBetaWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncBetaWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncBetaWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncBetaWithStreamingResponse(self)
|
||||
|
||||
|
||||
class BetaWithRawResponse:
|
||||
def __init__(self, beta: Beta) -> None:
|
||||
self._beta = beta
|
||||
|
||||
@cached_property
|
||||
def chatkit(self) -> ChatKitWithRawResponse:
|
||||
return ChatKitWithRawResponse(self._beta.chatkit)
|
||||
|
||||
@cached_property
|
||||
def assistants(self) -> AssistantsWithRawResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AssistantsWithRawResponse(self._beta.assistants)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> ThreadsWithRawResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return ThreadsWithRawResponse(self._beta.threads)
|
||||
|
||||
|
||||
class AsyncBetaWithRawResponse:
|
||||
def __init__(self, beta: AsyncBeta) -> None:
|
||||
self._beta = beta
|
||||
|
||||
@cached_property
|
||||
def chatkit(self) -> AsyncChatKitWithRawResponse:
|
||||
return AsyncChatKitWithRawResponse(self._beta.chatkit)
|
||||
|
||||
@cached_property
|
||||
def assistants(self) -> AsyncAssistantsWithRawResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AsyncAssistantsWithRawResponse(self._beta.assistants)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> AsyncThreadsWithRawResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AsyncThreadsWithRawResponse(self._beta.threads)
|
||||
|
||||
|
||||
class BetaWithStreamingResponse:
|
||||
def __init__(self, beta: Beta) -> None:
|
||||
self._beta = beta
|
||||
|
||||
@cached_property
|
||||
def chatkit(self) -> ChatKitWithStreamingResponse:
|
||||
return ChatKitWithStreamingResponse(self._beta.chatkit)
|
||||
|
||||
@cached_property
|
||||
def assistants(self) -> AssistantsWithStreamingResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AssistantsWithStreamingResponse(self._beta.assistants)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> ThreadsWithStreamingResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return ThreadsWithStreamingResponse(self._beta.threads)
|
||||
|
||||
|
||||
class AsyncBetaWithStreamingResponse:
|
||||
def __init__(self, beta: AsyncBeta) -> None:
|
||||
self._beta = beta
|
||||
|
||||
@cached_property
|
||||
def chatkit(self) -> AsyncChatKitWithStreamingResponse:
|
||||
return AsyncChatKitWithStreamingResponse(self._beta.chatkit)
|
||||
|
||||
@cached_property
|
||||
def assistants(self) -> AsyncAssistantsWithStreamingResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AsyncAssistantsWithStreamingResponse(self._beta.assistants)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> AsyncThreadsWithStreamingResponse:
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
return AsyncThreadsWithStreamingResponse(self._beta.threads)
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .chatkit import (
|
||||
ChatKit,
|
||||
AsyncChatKit,
|
||||
ChatKitWithRawResponse,
|
||||
AsyncChatKitWithRawResponse,
|
||||
ChatKitWithStreamingResponse,
|
||||
AsyncChatKitWithStreamingResponse,
|
||||
)
|
||||
from .threads import (
|
||||
Threads,
|
||||
AsyncThreads,
|
||||
ThreadsWithRawResponse,
|
||||
AsyncThreadsWithRawResponse,
|
||||
ThreadsWithStreamingResponse,
|
||||
AsyncThreadsWithStreamingResponse,
|
||||
)
|
||||
from .sessions import (
|
||||
Sessions,
|
||||
AsyncSessions,
|
||||
SessionsWithRawResponse,
|
||||
AsyncSessionsWithRawResponse,
|
||||
SessionsWithStreamingResponse,
|
||||
AsyncSessionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Sessions",
|
||||
"AsyncSessions",
|
||||
"SessionsWithRawResponse",
|
||||
"AsyncSessionsWithRawResponse",
|
||||
"SessionsWithStreamingResponse",
|
||||
"AsyncSessionsWithStreamingResponse",
|
||||
"Threads",
|
||||
"AsyncThreads",
|
||||
"ThreadsWithRawResponse",
|
||||
"AsyncThreadsWithRawResponse",
|
||||
"ThreadsWithStreamingResponse",
|
||||
"AsyncThreadsWithStreamingResponse",
|
||||
"ChatKit",
|
||||
"AsyncChatKit",
|
||||
"ChatKitWithRawResponse",
|
||||
"AsyncChatKitWithRawResponse",
|
||||
"ChatKitWithStreamingResponse",
|
||||
"AsyncChatKitWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,134 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from .threads import (
|
||||
Threads,
|
||||
AsyncThreads,
|
||||
ThreadsWithRawResponse,
|
||||
AsyncThreadsWithRawResponse,
|
||||
ThreadsWithStreamingResponse,
|
||||
AsyncThreadsWithStreamingResponse,
|
||||
)
|
||||
from .sessions import (
|
||||
Sessions,
|
||||
AsyncSessions,
|
||||
SessionsWithRawResponse,
|
||||
AsyncSessionsWithRawResponse,
|
||||
SessionsWithStreamingResponse,
|
||||
AsyncSessionsWithStreamingResponse,
|
||||
)
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
|
||||
__all__ = ["ChatKit", "AsyncChatKit"]
|
||||
|
||||
|
||||
class ChatKit(SyncAPIResource):
|
||||
@cached_property
|
||||
def sessions(self) -> Sessions:
|
||||
return Sessions(self._client)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> Threads:
|
||||
return Threads(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ChatKitWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ChatKitWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ChatKitWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ChatKitWithStreamingResponse(self)
|
||||
|
||||
|
||||
class AsyncChatKit(AsyncAPIResource):
|
||||
@cached_property
|
||||
def sessions(self) -> AsyncSessions:
|
||||
return AsyncSessions(self._client)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> AsyncThreads:
|
||||
return AsyncThreads(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncChatKitWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncChatKitWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncChatKitWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncChatKitWithStreamingResponse(self)
|
||||
|
||||
|
||||
class ChatKitWithRawResponse:
|
||||
def __init__(self, chatkit: ChatKit) -> None:
|
||||
self._chatkit = chatkit
|
||||
|
||||
@cached_property
|
||||
def sessions(self) -> SessionsWithRawResponse:
|
||||
return SessionsWithRawResponse(self._chatkit.sessions)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> ThreadsWithRawResponse:
|
||||
return ThreadsWithRawResponse(self._chatkit.threads)
|
||||
|
||||
|
||||
class AsyncChatKitWithRawResponse:
|
||||
def __init__(self, chatkit: AsyncChatKit) -> None:
|
||||
self._chatkit = chatkit
|
||||
|
||||
@cached_property
|
||||
def sessions(self) -> AsyncSessionsWithRawResponse:
|
||||
return AsyncSessionsWithRawResponse(self._chatkit.sessions)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> AsyncThreadsWithRawResponse:
|
||||
return AsyncThreadsWithRawResponse(self._chatkit.threads)
|
||||
|
||||
|
||||
class ChatKitWithStreamingResponse:
|
||||
def __init__(self, chatkit: ChatKit) -> None:
|
||||
self._chatkit = chatkit
|
||||
|
||||
@cached_property
|
||||
def sessions(self) -> SessionsWithStreamingResponse:
|
||||
return SessionsWithStreamingResponse(self._chatkit.sessions)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> ThreadsWithStreamingResponse:
|
||||
return ThreadsWithStreamingResponse(self._chatkit.threads)
|
||||
|
||||
|
||||
class AsyncChatKitWithStreamingResponse:
|
||||
def __init__(self, chatkit: AsyncChatKit) -> None:
|
||||
self._chatkit = chatkit
|
||||
|
||||
@cached_property
|
||||
def sessions(self) -> AsyncSessionsWithStreamingResponse:
|
||||
return AsyncSessionsWithStreamingResponse(self._chatkit.sessions)
|
||||
|
||||
@cached_property
|
||||
def threads(self) -> AsyncThreadsWithStreamingResponse:
|
||||
return AsyncThreadsWithStreamingResponse(self._chatkit.threads)
|
||||
|
|
@ -0,0 +1,305 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ...._utils import maybe_transform, async_maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ...._base_client import make_request_options
|
||||
from ....types.beta.chatkit import (
|
||||
ChatSessionWorkflowParam,
|
||||
ChatSessionRateLimitsParam,
|
||||
ChatSessionExpiresAfterParam,
|
||||
ChatSessionChatKitConfigurationParam,
|
||||
session_create_params,
|
||||
)
|
||||
from ....types.beta.chatkit.chat_session import ChatSession
|
||||
from ....types.beta.chatkit.chat_session_workflow_param import ChatSessionWorkflowParam
|
||||
from ....types.beta.chatkit.chat_session_rate_limits_param import ChatSessionRateLimitsParam
|
||||
from ....types.beta.chatkit.chat_session_expires_after_param import ChatSessionExpiresAfterParam
|
||||
from ....types.beta.chatkit.chat_session_chatkit_configuration_param import ChatSessionChatKitConfigurationParam
|
||||
|
||||
__all__ = ["Sessions", "AsyncSessions"]
|
||||
|
||||
|
||||
class Sessions(SyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> SessionsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return SessionsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> SessionsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return SessionsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
user: str,
|
||||
workflow: ChatSessionWorkflowParam,
|
||||
chatkit_configuration: ChatSessionChatKitConfigurationParam | Omit = omit,
|
||||
expires_after: ChatSessionExpiresAfterParam | Omit = omit,
|
||||
rate_limits: ChatSessionRateLimitsParam | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ChatSession:
|
||||
"""
|
||||
Create a ChatKit session.
|
||||
|
||||
Args:
|
||||
user: A free-form string that identifies your end user; ensures this Session can
|
||||
access other objects that have the same `user` scope.
|
||||
|
||||
workflow: Workflow that powers the session.
|
||||
|
||||
chatkit_configuration: Optional overrides for ChatKit runtime configuration features
|
||||
|
||||
expires_after: Optional override for session expiration timing in seconds from creation.
|
||||
Defaults to 10 minutes.
|
||||
|
||||
rate_limits: Optional override for per-minute request limits. When omitted, defaults to 10.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._post(
|
||||
"/chatkit/sessions",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"user": user,
|
||||
"workflow": workflow,
|
||||
"chatkit_configuration": chatkit_configuration,
|
||||
"expires_after": expires_after,
|
||||
"rate_limits": rate_limits,
|
||||
},
|
||||
session_create_params.SessionCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ChatSession,
|
||||
)
|
||||
|
||||
def cancel(
|
||||
self,
|
||||
session_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ChatSession:
|
||||
"""
|
||||
Cancel an active ChatKit session and return its most recent metadata.
|
||||
|
||||
Cancelling prevents new requests from using the issued client secret.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not session_id:
|
||||
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._post(
|
||||
f"/chatkit/sessions/{session_id}/cancel",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ChatSession,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSessions(AsyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncSessionsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncSessionsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncSessionsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncSessionsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
user: str,
|
||||
workflow: ChatSessionWorkflowParam,
|
||||
chatkit_configuration: ChatSessionChatKitConfigurationParam | Omit = omit,
|
||||
expires_after: ChatSessionExpiresAfterParam | Omit = omit,
|
||||
rate_limits: ChatSessionRateLimitsParam | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ChatSession:
|
||||
"""
|
||||
Create a ChatKit session.
|
||||
|
||||
Args:
|
||||
user: A free-form string that identifies your end user; ensures this Session can
|
||||
access other objects that have the same `user` scope.
|
||||
|
||||
workflow: Workflow that powers the session.
|
||||
|
||||
chatkit_configuration: Optional overrides for ChatKit runtime configuration features
|
||||
|
||||
expires_after: Optional override for session expiration timing in seconds from creation.
|
||||
Defaults to 10 minutes.
|
||||
|
||||
rate_limits: Optional override for per-minute request limits. When omitted, defaults to 10.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
"/chatkit/sessions",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"user": user,
|
||||
"workflow": workflow,
|
||||
"chatkit_configuration": chatkit_configuration,
|
||||
"expires_after": expires_after,
|
||||
"rate_limits": rate_limits,
|
||||
},
|
||||
session_create_params.SessionCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ChatSession,
|
||||
)
|
||||
|
||||
async def cancel(
|
||||
self,
|
||||
session_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ChatSession:
|
||||
"""
|
||||
Cancel an active ChatKit session and return its most recent metadata.
|
||||
|
||||
Cancelling prevents new requests from using the issued client secret.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not session_id:
|
||||
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
f"/chatkit/sessions/{session_id}/cancel",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ChatSession,
|
||||
)
|
||||
|
||||
|
||||
class SessionsWithRawResponse:
|
||||
def __init__(self, sessions: Sessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
self.cancel = _legacy_response.to_raw_response_wrapper(
|
||||
sessions.cancel,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSessionsWithRawResponse:
|
||||
def __init__(self, sessions: AsyncSessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
self.cancel = _legacy_response.async_to_raw_response_wrapper(
|
||||
sessions.cancel,
|
||||
)
|
||||
|
||||
|
||||
class SessionsWithStreamingResponse:
|
||||
def __init__(self, sessions: Sessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
self.cancel = to_streamed_response_wrapper(
|
||||
sessions.cancel,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSessionsWithStreamingResponse:
|
||||
def __init__(self, sessions: AsyncSessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
self.cancel = async_to_streamed_response_wrapper(
|
||||
sessions.cancel,
|
||||
)
|
||||
|
|
@ -0,0 +1,521 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, cast
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ...._utils import maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ....pagination import SyncConversationCursorPage, AsyncConversationCursorPage
|
||||
from ...._base_client import AsyncPaginator, make_request_options
|
||||
from ....types.beta.chatkit import thread_list_params, thread_list_items_params
|
||||
from ....types.beta.chatkit.chatkit_thread import ChatKitThread
|
||||
from ....types.beta.chatkit.thread_delete_response import ThreadDeleteResponse
|
||||
from ....types.beta.chatkit.chatkit_thread_item_list import Data
|
||||
|
||||
__all__ = ["Threads", "AsyncThreads"]
|
||||
|
||||
|
||||
class Threads(SyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ThreadsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ThreadsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ThreadsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ThreadsWithStreamingResponse(self)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ChatKitThread:
|
||||
"""
|
||||
Retrieve a ChatKit thread by its identifier.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._get(
|
||||
f"/chatkit/threads/{thread_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ChatKitThread,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
user: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncConversationCursorPage[ChatKitThread]:
|
||||
"""
|
||||
List ChatKit threads with optional pagination and user filters.
|
||||
|
||||
Args:
|
||||
after: List items created after this thread item ID. Defaults to null for the first
|
||||
page.
|
||||
|
||||
before: List items created before this thread item ID. Defaults to null for the newest
|
||||
results.
|
||||
|
||||
limit: Maximum number of thread items to return. Defaults to 20.
|
||||
|
||||
order: Sort order for results by creation time. Defaults to `desc`.
|
||||
|
||||
user: Filter threads that belong to this user identifier. Defaults to null to return
|
||||
all users.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
"/chatkit/threads",
|
||||
page=SyncConversationCursorPage[ChatKitThread],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"user": user,
|
||||
},
|
||||
thread_list_params.ThreadListParams,
|
||||
),
|
||||
),
|
||||
model=ChatKitThread,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ThreadDeleteResponse:
|
||||
"""
|
||||
Delete a ChatKit thread along with its items and stored attachments.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._delete(
|
||||
f"/chatkit/threads/{thread_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ThreadDeleteResponse,
|
||||
)
|
||||
|
||||
def list_items(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncConversationCursorPage[Data]:
|
||||
"""
|
||||
List items that belong to a ChatKit thread.
|
||||
|
||||
Args:
|
||||
after: List items created after this thread item ID. Defaults to null for the first
|
||||
page.
|
||||
|
||||
before: List items created before this thread item ID. Defaults to null for the newest
|
||||
results.
|
||||
|
||||
limit: Maximum number of thread items to return. Defaults to 20.
|
||||
|
||||
order: Sort order for results by creation time. Defaults to `desc`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
f"/chatkit/threads/{thread_id}/items",
|
||||
page=SyncConversationCursorPage[Data],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
thread_list_items_params.ThreadListItemsParams,
|
||||
),
|
||||
),
|
||||
model=cast(Any, Data), # Union types cannot be passed in as arguments in the type system
|
||||
)
|
||||
|
||||
|
||||
class AsyncThreads(AsyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncThreadsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncThreadsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncThreadsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncThreadsWithStreamingResponse(self)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ChatKitThread:
|
||||
"""
|
||||
Retrieve a ChatKit thread by its identifier.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return await self._get(
|
||||
f"/chatkit/threads/{thread_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ChatKitThread,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
user: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[ChatKitThread, AsyncConversationCursorPage[ChatKitThread]]:
|
||||
"""
|
||||
List ChatKit threads with optional pagination and user filters.
|
||||
|
||||
Args:
|
||||
after: List items created after this thread item ID. Defaults to null for the first
|
||||
page.
|
||||
|
||||
before: List items created before this thread item ID. Defaults to null for the newest
|
||||
results.
|
||||
|
||||
limit: Maximum number of thread items to return. Defaults to 20.
|
||||
|
||||
order: Sort order for results by creation time. Defaults to `desc`.
|
||||
|
||||
user: Filter threads that belong to this user identifier. Defaults to null to return
|
||||
all users.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
"/chatkit/threads",
|
||||
page=AsyncConversationCursorPage[ChatKitThread],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"user": user,
|
||||
},
|
||||
thread_list_params.ThreadListParams,
|
||||
),
|
||||
),
|
||||
model=ChatKitThread,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ThreadDeleteResponse:
|
||||
"""
|
||||
Delete a ChatKit thread along with its items and stored attachments.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return await self._delete(
|
||||
f"/chatkit/threads/{thread_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ThreadDeleteResponse,
|
||||
)
|
||||
|
||||
def list_items(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[Data, AsyncConversationCursorPage[Data]]:
|
||||
"""
|
||||
List items that belong to a ChatKit thread.
|
||||
|
||||
Args:
|
||||
after: List items created after this thread item ID. Defaults to null for the first
|
||||
page.
|
||||
|
||||
before: List items created before this thread item ID. Defaults to null for the newest
|
||||
results.
|
||||
|
||||
limit: Maximum number of thread items to return. Defaults to 20.
|
||||
|
||||
order: Sort order for results by creation time. Defaults to `desc`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "chatkit_beta=v1", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
f"/chatkit/threads/{thread_id}/items",
|
||||
page=AsyncConversationCursorPage[Data],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
thread_list_items_params.ThreadListItemsParams,
|
||||
),
|
||||
),
|
||||
model=cast(Any, Data), # Union types cannot be passed in as arguments in the type system
|
||||
)
|
||||
|
||||
|
||||
class ThreadsWithRawResponse:
|
||||
def __init__(self, threads: Threads) -> None:
|
||||
self._threads = threads
|
||||
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
threads.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
threads.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
threads.delete,
|
||||
)
|
||||
self.list_items = _legacy_response.to_raw_response_wrapper(
|
||||
threads.list_items,
|
||||
)
|
||||
|
||||
|
||||
class AsyncThreadsWithRawResponse:
|
||||
def __init__(self, threads: AsyncThreads) -> None:
|
||||
self._threads = threads
|
||||
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
threads.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
threads.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
threads.delete,
|
||||
)
|
||||
self.list_items = _legacy_response.async_to_raw_response_wrapper(
|
||||
threads.list_items,
|
||||
)
|
||||
|
||||
|
||||
class ThreadsWithStreamingResponse:
|
||||
def __init__(self, threads: Threads) -> None:
|
||||
self._threads = threads
|
||||
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
threads.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
threads.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
threads.delete,
|
||||
)
|
||||
self.list_items = to_streamed_response_wrapper(
|
||||
threads.list_items,
|
||||
)
|
||||
|
||||
|
||||
class AsyncThreadsWithStreamingResponse:
|
||||
def __init__(self, threads: AsyncThreads) -> None:
|
||||
self._threads = threads
|
||||
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
threads.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
threads.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
threads.delete,
|
||||
)
|
||||
self.list_items = async_to_streamed_response_wrapper(
|
||||
threads.list_items,
|
||||
)
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .realtime import (
|
||||
Realtime,
|
||||
AsyncRealtime,
|
||||
RealtimeWithRawResponse,
|
||||
AsyncRealtimeWithRawResponse,
|
||||
RealtimeWithStreamingResponse,
|
||||
AsyncRealtimeWithStreamingResponse,
|
||||
)
|
||||
from .sessions import (
|
||||
Sessions,
|
||||
AsyncSessions,
|
||||
SessionsWithRawResponse,
|
||||
AsyncSessionsWithRawResponse,
|
||||
SessionsWithStreamingResponse,
|
||||
AsyncSessionsWithStreamingResponse,
|
||||
)
|
||||
from .transcription_sessions import (
|
||||
TranscriptionSessions,
|
||||
AsyncTranscriptionSessions,
|
||||
TranscriptionSessionsWithRawResponse,
|
||||
AsyncTranscriptionSessionsWithRawResponse,
|
||||
TranscriptionSessionsWithStreamingResponse,
|
||||
AsyncTranscriptionSessionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Sessions",
|
||||
"AsyncSessions",
|
||||
"SessionsWithRawResponse",
|
||||
"AsyncSessionsWithRawResponse",
|
||||
"SessionsWithStreamingResponse",
|
||||
"AsyncSessionsWithStreamingResponse",
|
||||
"TranscriptionSessions",
|
||||
"AsyncTranscriptionSessions",
|
||||
"TranscriptionSessionsWithRawResponse",
|
||||
"AsyncTranscriptionSessionsWithRawResponse",
|
||||
"TranscriptionSessionsWithStreamingResponse",
|
||||
"AsyncTranscriptionSessionsWithStreamingResponse",
|
||||
"Realtime",
|
||||
"AsyncRealtime",
|
||||
"RealtimeWithRawResponse",
|
||||
"AsyncRealtimeWithRawResponse",
|
||||
"RealtimeWithStreamingResponse",
|
||||
"AsyncRealtimeWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,424 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import List, Union, Iterable
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
|
||||
from ...._utils import maybe_transform, async_maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ...._base_client import make_request_options
|
||||
from ....types.beta.realtime import session_create_params
|
||||
from ....types.beta.realtime.session_create_response import SessionCreateResponse
|
||||
|
||||
__all__ = ["Sessions", "AsyncSessions"]
|
||||
|
||||
|
||||
class Sessions(SyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> SessionsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return SessionsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> SessionsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return SessionsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
client_secret: session_create_params.ClientSecret | NotGiven = NOT_GIVEN,
|
||||
input_audio_format: Literal["pcm16", "g711_ulaw", "g711_alaw"] | NotGiven = NOT_GIVEN,
|
||||
input_audio_noise_reduction: session_create_params.InputAudioNoiseReduction | NotGiven = NOT_GIVEN,
|
||||
input_audio_transcription: session_create_params.InputAudioTranscription | NotGiven = NOT_GIVEN,
|
||||
instructions: str | NotGiven = NOT_GIVEN,
|
||||
max_response_output_tokens: Union[int, Literal["inf"]] | NotGiven = NOT_GIVEN,
|
||||
modalities: List[Literal["text", "audio"]] | NotGiven = NOT_GIVEN,
|
||||
model: Literal[
|
||||
"gpt-realtime",
|
||||
"gpt-realtime-2025-08-28",
|
||||
"gpt-4o-realtime-preview",
|
||||
"gpt-4o-realtime-preview-2024-10-01",
|
||||
"gpt-4o-realtime-preview-2024-12-17",
|
||||
"gpt-4o-realtime-preview-2025-06-03",
|
||||
"gpt-4o-mini-realtime-preview",
|
||||
"gpt-4o-mini-realtime-preview-2024-12-17",
|
||||
]
|
||||
| NotGiven = NOT_GIVEN,
|
||||
output_audio_format: Literal["pcm16", "g711_ulaw", "g711_alaw"] | NotGiven = NOT_GIVEN,
|
||||
speed: float | NotGiven = NOT_GIVEN,
|
||||
temperature: float | NotGiven = NOT_GIVEN,
|
||||
tool_choice: str | NotGiven = NOT_GIVEN,
|
||||
tools: Iterable[session_create_params.Tool] | NotGiven = NOT_GIVEN,
|
||||
tracing: session_create_params.Tracing | NotGiven = NOT_GIVEN,
|
||||
turn_detection: session_create_params.TurnDetection | NotGiven = NOT_GIVEN,
|
||||
voice: Union[str, Literal["alloy", "ash", "ballad", "coral", "echo", "sage", "shimmer", "verse"]]
|
||||
| NotGiven = NOT_GIVEN,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
||||
) -> SessionCreateResponse:
|
||||
"""
|
||||
Create an ephemeral API token for use in client-side applications with the
|
||||
Realtime API. Can be configured with the same session parameters as the
|
||||
`session.update` client event.
|
||||
|
||||
It responds with a session object, plus a `client_secret` key which contains a
|
||||
usable ephemeral API token that can be used to authenticate browser clients for
|
||||
the Realtime API.
|
||||
|
||||
Args:
|
||||
client_secret: Configuration options for the generated client secret.
|
||||
|
||||
input_audio_format: The format of input audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`. For
|
||||
`pcm16`, input audio must be 16-bit PCM at a 24kHz sample rate, single channel
|
||||
(mono), and little-endian byte order.
|
||||
|
||||
input_audio_noise_reduction: Configuration for input audio noise reduction. This can be set to `null` to turn
|
||||
off. Noise reduction filters audio added to the input audio buffer before it is
|
||||
sent to VAD and the model. Filtering the audio can improve VAD and turn
|
||||
detection accuracy (reducing false positives) and model performance by improving
|
||||
perception of the input audio.
|
||||
|
||||
input_audio_transcription: Configuration for input audio transcription, defaults to off and can be set to
|
||||
`null` to turn off once on. Input audio transcription is not native to the
|
||||
model, since the model consumes audio directly. Transcription runs
|
||||
asynchronously through
|
||||
[the /audio/transcriptions endpoint](https://platform.openai.com/docs/api-reference/audio/createTranscription)
|
||||
and should be treated as guidance of input audio content rather than precisely
|
||||
what the model heard. The client can optionally set the language and prompt for
|
||||
transcription, these offer additional guidance to the transcription service.
|
||||
|
||||
instructions: The default system instructions (i.e. system message) prepended to model calls.
|
||||
This field allows the client to guide the model on desired responses. The model
|
||||
can be instructed on response content and format, (e.g. "be extremely succinct",
|
||||
"act friendly", "here are examples of good responses") and on audio behavior
|
||||
(e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The
|
||||
instructions are not guaranteed to be followed by the model, but they provide
|
||||
guidance to the model on the desired behavior.
|
||||
|
||||
Note that the server sets default instructions which will be used if this field
|
||||
is not set and are visible in the `session.created` event at the start of the
|
||||
session.
|
||||
|
||||
max_response_output_tokens: Maximum number of output tokens for a single assistant response, inclusive of
|
||||
tool calls. Provide an integer between 1 and 4096 to limit output tokens, or
|
||||
`inf` for the maximum available tokens for a given model. Defaults to `inf`.
|
||||
|
||||
modalities: The set of modalities the model can respond with. To disable audio, set this to
|
||||
["text"].
|
||||
|
||||
model: The Realtime model used for this session.
|
||||
|
||||
output_audio_format: The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
|
||||
For `pcm16`, output audio is sampled at a rate of 24kHz.
|
||||
|
||||
speed: The speed of the model's spoken response. 1.0 is the default speed. 0.25 is the
|
||||
minimum speed. 1.5 is the maximum speed. This value can only be changed in
|
||||
between model turns, not while a response is in progress.
|
||||
|
||||
temperature: Sampling temperature for the model, limited to [0.6, 1.2]. For audio models a
|
||||
temperature of 0.8 is highly recommended for best performance.
|
||||
|
||||
tool_choice: How the model chooses tools. Options are `auto`, `none`, `required`, or specify
|
||||
a function.
|
||||
|
||||
tools: Tools (functions) available to the model.
|
||||
|
||||
tracing: Configuration options for tracing. Set to null to disable tracing. Once tracing
|
||||
is enabled for a session, the configuration cannot be modified.
|
||||
|
||||
`auto` will create a trace for the session with default values for the workflow
|
||||
name, group id, and metadata.
|
||||
|
||||
turn_detection: Configuration for turn detection, ether Server VAD or Semantic VAD. This can be
|
||||
set to `null` to turn off, in which case the client must manually trigger model
|
||||
response. Server VAD means that the model will detect the start and end of
|
||||
speech based on audio volume and respond at the end of user speech. Semantic VAD
|
||||
is more advanced and uses a turn detection model (in conjunction with VAD) to
|
||||
semantically estimate whether the user has finished speaking, then dynamically
|
||||
sets a timeout based on this probability. For example, if user audio trails off
|
||||
with "uhhm", the model will score a low probability of turn end and wait longer
|
||||
for the user to continue speaking. This can be useful for more natural
|
||||
conversations, but may have a higher latency.
|
||||
|
||||
voice: The voice the model uses to respond. Voice cannot be changed during the session
|
||||
once the model has responded with audio at least once. Current voice options are
|
||||
`alloy`, `ash`, `ballad`, `coral`, `echo`, `sage`, `shimmer`, and `verse`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._post(
|
||||
"/realtime/sessions",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"client_secret": client_secret,
|
||||
"input_audio_format": input_audio_format,
|
||||
"input_audio_noise_reduction": input_audio_noise_reduction,
|
||||
"input_audio_transcription": input_audio_transcription,
|
||||
"instructions": instructions,
|
||||
"max_response_output_tokens": max_response_output_tokens,
|
||||
"modalities": modalities,
|
||||
"model": model,
|
||||
"output_audio_format": output_audio_format,
|
||||
"speed": speed,
|
||||
"temperature": temperature,
|
||||
"tool_choice": tool_choice,
|
||||
"tools": tools,
|
||||
"tracing": tracing,
|
||||
"turn_detection": turn_detection,
|
||||
"voice": voice,
|
||||
},
|
||||
session_create_params.SessionCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=SessionCreateResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSessions(AsyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncSessionsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncSessionsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncSessionsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncSessionsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
client_secret: session_create_params.ClientSecret | NotGiven = NOT_GIVEN,
|
||||
input_audio_format: Literal["pcm16", "g711_ulaw", "g711_alaw"] | NotGiven = NOT_GIVEN,
|
||||
input_audio_noise_reduction: session_create_params.InputAudioNoiseReduction | NotGiven = NOT_GIVEN,
|
||||
input_audio_transcription: session_create_params.InputAudioTranscription | NotGiven = NOT_GIVEN,
|
||||
instructions: str | NotGiven = NOT_GIVEN,
|
||||
max_response_output_tokens: Union[int, Literal["inf"]] | NotGiven = NOT_GIVEN,
|
||||
modalities: List[Literal["text", "audio"]] | NotGiven = NOT_GIVEN,
|
||||
model: Literal[
|
||||
"gpt-realtime",
|
||||
"gpt-realtime-2025-08-28",
|
||||
"gpt-4o-realtime-preview",
|
||||
"gpt-4o-realtime-preview-2024-10-01",
|
||||
"gpt-4o-realtime-preview-2024-12-17",
|
||||
"gpt-4o-realtime-preview-2025-06-03",
|
||||
"gpt-4o-mini-realtime-preview",
|
||||
"gpt-4o-mini-realtime-preview-2024-12-17",
|
||||
]
|
||||
| NotGiven = NOT_GIVEN,
|
||||
output_audio_format: Literal["pcm16", "g711_ulaw", "g711_alaw"] | NotGiven = NOT_GIVEN,
|
||||
speed: float | NotGiven = NOT_GIVEN,
|
||||
temperature: float | NotGiven = NOT_GIVEN,
|
||||
tool_choice: str | NotGiven = NOT_GIVEN,
|
||||
tools: Iterable[session_create_params.Tool] | NotGiven = NOT_GIVEN,
|
||||
tracing: session_create_params.Tracing | NotGiven = NOT_GIVEN,
|
||||
turn_detection: session_create_params.TurnDetection | NotGiven = NOT_GIVEN,
|
||||
voice: Union[str, Literal["alloy", "ash", "ballad", "coral", "echo", "sage", "shimmer", "verse"]]
|
||||
| NotGiven = NOT_GIVEN,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
||||
) -> SessionCreateResponse:
|
||||
"""
|
||||
Create an ephemeral API token for use in client-side applications with the
|
||||
Realtime API. Can be configured with the same session parameters as the
|
||||
`session.update` client event.
|
||||
|
||||
It responds with a session object, plus a `client_secret` key which contains a
|
||||
usable ephemeral API token that can be used to authenticate browser clients for
|
||||
the Realtime API.
|
||||
|
||||
Args:
|
||||
client_secret: Configuration options for the generated client secret.
|
||||
|
||||
input_audio_format: The format of input audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`. For
|
||||
`pcm16`, input audio must be 16-bit PCM at a 24kHz sample rate, single channel
|
||||
(mono), and little-endian byte order.
|
||||
|
||||
input_audio_noise_reduction: Configuration for input audio noise reduction. This can be set to `null` to turn
|
||||
off. Noise reduction filters audio added to the input audio buffer before it is
|
||||
sent to VAD and the model. Filtering the audio can improve VAD and turn
|
||||
detection accuracy (reducing false positives) and model performance by improving
|
||||
perception of the input audio.
|
||||
|
||||
input_audio_transcription: Configuration for input audio transcription, defaults to off and can be set to
|
||||
`null` to turn off once on. Input audio transcription is not native to the
|
||||
model, since the model consumes audio directly. Transcription runs
|
||||
asynchronously through
|
||||
[the /audio/transcriptions endpoint](https://platform.openai.com/docs/api-reference/audio/createTranscription)
|
||||
and should be treated as guidance of input audio content rather than precisely
|
||||
what the model heard. The client can optionally set the language and prompt for
|
||||
transcription, these offer additional guidance to the transcription service.
|
||||
|
||||
instructions: The default system instructions (i.e. system message) prepended to model calls.
|
||||
This field allows the client to guide the model on desired responses. The model
|
||||
can be instructed on response content and format, (e.g. "be extremely succinct",
|
||||
"act friendly", "here are examples of good responses") and on audio behavior
|
||||
(e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The
|
||||
instructions are not guaranteed to be followed by the model, but they provide
|
||||
guidance to the model on the desired behavior.
|
||||
|
||||
Note that the server sets default instructions which will be used if this field
|
||||
is not set and are visible in the `session.created` event at the start of the
|
||||
session.
|
||||
|
||||
max_response_output_tokens: Maximum number of output tokens for a single assistant response, inclusive of
|
||||
tool calls. Provide an integer between 1 and 4096 to limit output tokens, or
|
||||
`inf` for the maximum available tokens for a given model. Defaults to `inf`.
|
||||
|
||||
modalities: The set of modalities the model can respond with. To disable audio, set this to
|
||||
["text"].
|
||||
|
||||
model: The Realtime model used for this session.
|
||||
|
||||
output_audio_format: The format of output audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`.
|
||||
For `pcm16`, output audio is sampled at a rate of 24kHz.
|
||||
|
||||
speed: The speed of the model's spoken response. 1.0 is the default speed. 0.25 is the
|
||||
minimum speed. 1.5 is the maximum speed. This value can only be changed in
|
||||
between model turns, not while a response is in progress.
|
||||
|
||||
temperature: Sampling temperature for the model, limited to [0.6, 1.2]. For audio models a
|
||||
temperature of 0.8 is highly recommended for best performance.
|
||||
|
||||
tool_choice: How the model chooses tools. Options are `auto`, `none`, `required`, or specify
|
||||
a function.
|
||||
|
||||
tools: Tools (functions) available to the model.
|
||||
|
||||
tracing: Configuration options for tracing. Set to null to disable tracing. Once tracing
|
||||
is enabled for a session, the configuration cannot be modified.
|
||||
|
||||
`auto` will create a trace for the session with default values for the workflow
|
||||
name, group id, and metadata.
|
||||
|
||||
turn_detection: Configuration for turn detection, ether Server VAD or Semantic VAD. This can be
|
||||
set to `null` to turn off, in which case the client must manually trigger model
|
||||
response. Server VAD means that the model will detect the start and end of
|
||||
speech based on audio volume and respond at the end of user speech. Semantic VAD
|
||||
is more advanced and uses a turn detection model (in conjunction with VAD) to
|
||||
semantically estimate whether the user has finished speaking, then dynamically
|
||||
sets a timeout based on this probability. For example, if user audio trails off
|
||||
with "uhhm", the model will score a low probability of turn end and wait longer
|
||||
for the user to continue speaking. This can be useful for more natural
|
||||
conversations, but may have a higher latency.
|
||||
|
||||
voice: The voice the model uses to respond. Voice cannot be changed during the session
|
||||
once the model has responded with audio at least once. Current voice options are
|
||||
`alloy`, `ash`, `ballad`, `coral`, `echo`, `sage`, `shimmer`, and `verse`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
"/realtime/sessions",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"client_secret": client_secret,
|
||||
"input_audio_format": input_audio_format,
|
||||
"input_audio_noise_reduction": input_audio_noise_reduction,
|
||||
"input_audio_transcription": input_audio_transcription,
|
||||
"instructions": instructions,
|
||||
"max_response_output_tokens": max_response_output_tokens,
|
||||
"modalities": modalities,
|
||||
"model": model,
|
||||
"output_audio_format": output_audio_format,
|
||||
"speed": speed,
|
||||
"temperature": temperature,
|
||||
"tool_choice": tool_choice,
|
||||
"tools": tools,
|
||||
"tracing": tracing,
|
||||
"turn_detection": turn_detection,
|
||||
"voice": voice,
|
||||
},
|
||||
session_create_params.SessionCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=SessionCreateResponse,
|
||||
)
|
||||
|
||||
|
||||
class SessionsWithRawResponse:
|
||||
def __init__(self, sessions: Sessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSessionsWithRawResponse:
|
||||
def __init__(self, sessions: AsyncSessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
|
||||
|
||||
class SessionsWithStreamingResponse:
|
||||
def __init__(self, sessions: Sessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSessionsWithStreamingResponse:
|
||||
def __init__(self, sessions: AsyncSessions) -> None:
|
||||
self._sessions = sessions
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
sessions.create,
|
||||
)
|
||||
|
|
@ -0,0 +1,282 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import List
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
|
||||
from ...._utils import maybe_transform, async_maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ...._base_client import make_request_options
|
||||
from ....types.beta.realtime import transcription_session_create_params
|
||||
from ....types.beta.realtime.transcription_session import TranscriptionSession
|
||||
|
||||
__all__ = ["TranscriptionSessions", "AsyncTranscriptionSessions"]
|
||||
|
||||
|
||||
class TranscriptionSessions(SyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> TranscriptionSessionsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return TranscriptionSessionsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> TranscriptionSessionsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return TranscriptionSessionsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
client_secret: transcription_session_create_params.ClientSecret | NotGiven = NOT_GIVEN,
|
||||
include: List[str] | NotGiven = NOT_GIVEN,
|
||||
input_audio_format: Literal["pcm16", "g711_ulaw", "g711_alaw"] | NotGiven = NOT_GIVEN,
|
||||
input_audio_noise_reduction: transcription_session_create_params.InputAudioNoiseReduction
|
||||
| NotGiven = NOT_GIVEN,
|
||||
input_audio_transcription: transcription_session_create_params.InputAudioTranscription | NotGiven = NOT_GIVEN,
|
||||
modalities: List[Literal["text", "audio"]] | NotGiven = NOT_GIVEN,
|
||||
turn_detection: transcription_session_create_params.TurnDetection | NotGiven = NOT_GIVEN,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
||||
) -> TranscriptionSession:
|
||||
"""
|
||||
Create an ephemeral API token for use in client-side applications with the
|
||||
Realtime API specifically for realtime transcriptions. Can be configured with
|
||||
the same session parameters as the `transcription_session.update` client event.
|
||||
|
||||
It responds with a session object, plus a `client_secret` key which contains a
|
||||
usable ephemeral API token that can be used to authenticate browser clients for
|
||||
the Realtime API.
|
||||
|
||||
Args:
|
||||
client_secret: Configuration options for the generated client secret.
|
||||
|
||||
include:
|
||||
The set of items to include in the transcription. Current available items are:
|
||||
|
||||
- `item.input_audio_transcription.logprobs`
|
||||
|
||||
input_audio_format: The format of input audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`. For
|
||||
`pcm16`, input audio must be 16-bit PCM at a 24kHz sample rate, single channel
|
||||
(mono), and little-endian byte order.
|
||||
|
||||
input_audio_noise_reduction: Configuration for input audio noise reduction. This can be set to `null` to turn
|
||||
off. Noise reduction filters audio added to the input audio buffer before it is
|
||||
sent to VAD and the model. Filtering the audio can improve VAD and turn
|
||||
detection accuracy (reducing false positives) and model performance by improving
|
||||
perception of the input audio.
|
||||
|
||||
input_audio_transcription: Configuration for input audio transcription. The client can optionally set the
|
||||
language and prompt for transcription, these offer additional guidance to the
|
||||
transcription service.
|
||||
|
||||
modalities: The set of modalities the model can respond with. To disable audio, set this to
|
||||
["text"].
|
||||
|
||||
turn_detection: Configuration for turn detection, ether Server VAD or Semantic VAD. This can be
|
||||
set to `null` to turn off, in which case the client must manually trigger model
|
||||
response. Server VAD means that the model will detect the start and end of
|
||||
speech based on audio volume and respond at the end of user speech. Semantic VAD
|
||||
is more advanced and uses a turn detection model (in conjunction with VAD) to
|
||||
semantically estimate whether the user has finished speaking, then dynamically
|
||||
sets a timeout based on this probability. For example, if user audio trails off
|
||||
with "uhhm", the model will score a low probability of turn end and wait longer
|
||||
for the user to continue speaking. This can be useful for more natural
|
||||
conversations, but may have a higher latency.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._post(
|
||||
"/realtime/transcription_sessions",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"client_secret": client_secret,
|
||||
"include": include,
|
||||
"input_audio_format": input_audio_format,
|
||||
"input_audio_noise_reduction": input_audio_noise_reduction,
|
||||
"input_audio_transcription": input_audio_transcription,
|
||||
"modalities": modalities,
|
||||
"turn_detection": turn_detection,
|
||||
},
|
||||
transcription_session_create_params.TranscriptionSessionCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=TranscriptionSession,
|
||||
)
|
||||
|
||||
|
||||
class AsyncTranscriptionSessions(AsyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncTranscriptionSessionsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncTranscriptionSessionsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncTranscriptionSessionsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncTranscriptionSessionsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
client_secret: transcription_session_create_params.ClientSecret | NotGiven = NOT_GIVEN,
|
||||
include: List[str] | NotGiven = NOT_GIVEN,
|
||||
input_audio_format: Literal["pcm16", "g711_ulaw", "g711_alaw"] | NotGiven = NOT_GIVEN,
|
||||
input_audio_noise_reduction: transcription_session_create_params.InputAudioNoiseReduction
|
||||
| NotGiven = NOT_GIVEN,
|
||||
input_audio_transcription: transcription_session_create_params.InputAudioTranscription | NotGiven = NOT_GIVEN,
|
||||
modalities: List[Literal["text", "audio"]] | NotGiven = NOT_GIVEN,
|
||||
turn_detection: transcription_session_create_params.TurnDetection | NotGiven = NOT_GIVEN,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
||||
) -> TranscriptionSession:
|
||||
"""
|
||||
Create an ephemeral API token for use in client-side applications with the
|
||||
Realtime API specifically for realtime transcriptions. Can be configured with
|
||||
the same session parameters as the `transcription_session.update` client event.
|
||||
|
||||
It responds with a session object, plus a `client_secret` key which contains a
|
||||
usable ephemeral API token that can be used to authenticate browser clients for
|
||||
the Realtime API.
|
||||
|
||||
Args:
|
||||
client_secret: Configuration options for the generated client secret.
|
||||
|
||||
include:
|
||||
The set of items to include in the transcription. Current available items are:
|
||||
|
||||
- `item.input_audio_transcription.logprobs`
|
||||
|
||||
input_audio_format: The format of input audio. Options are `pcm16`, `g711_ulaw`, or `g711_alaw`. For
|
||||
`pcm16`, input audio must be 16-bit PCM at a 24kHz sample rate, single channel
|
||||
(mono), and little-endian byte order.
|
||||
|
||||
input_audio_noise_reduction: Configuration for input audio noise reduction. This can be set to `null` to turn
|
||||
off. Noise reduction filters audio added to the input audio buffer before it is
|
||||
sent to VAD and the model. Filtering the audio can improve VAD and turn
|
||||
detection accuracy (reducing false positives) and model performance by improving
|
||||
perception of the input audio.
|
||||
|
||||
input_audio_transcription: Configuration for input audio transcription. The client can optionally set the
|
||||
language and prompt for transcription, these offer additional guidance to the
|
||||
transcription service.
|
||||
|
||||
modalities: The set of modalities the model can respond with. To disable audio, set this to
|
||||
["text"].
|
||||
|
||||
turn_detection: Configuration for turn detection, ether Server VAD or Semantic VAD. This can be
|
||||
set to `null` to turn off, in which case the client must manually trigger model
|
||||
response. Server VAD means that the model will detect the start and end of
|
||||
speech based on audio volume and respond at the end of user speech. Semantic VAD
|
||||
is more advanced and uses a turn detection model (in conjunction with VAD) to
|
||||
semantically estimate whether the user has finished speaking, then dynamically
|
||||
sets a timeout based on this probability. For example, if user audio trails off
|
||||
with "uhhm", the model will score a low probability of turn end and wait longer
|
||||
for the user to continue speaking. This can be useful for more natural
|
||||
conversations, but may have a higher latency.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
"/realtime/transcription_sessions",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"client_secret": client_secret,
|
||||
"include": include,
|
||||
"input_audio_format": input_audio_format,
|
||||
"input_audio_noise_reduction": input_audio_noise_reduction,
|
||||
"input_audio_transcription": input_audio_transcription,
|
||||
"modalities": modalities,
|
||||
"turn_detection": turn_detection,
|
||||
},
|
||||
transcription_session_create_params.TranscriptionSessionCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=TranscriptionSession,
|
||||
)
|
||||
|
||||
|
||||
class TranscriptionSessionsWithRawResponse:
|
||||
def __init__(self, transcription_sessions: TranscriptionSessions) -> None:
|
||||
self._transcription_sessions = transcription_sessions
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
transcription_sessions.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncTranscriptionSessionsWithRawResponse:
|
||||
def __init__(self, transcription_sessions: AsyncTranscriptionSessions) -> None:
|
||||
self._transcription_sessions = transcription_sessions
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
transcription_sessions.create,
|
||||
)
|
||||
|
||||
|
||||
class TranscriptionSessionsWithStreamingResponse:
|
||||
def __init__(self, transcription_sessions: TranscriptionSessions) -> None:
|
||||
self._transcription_sessions = transcription_sessions
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
transcription_sessions.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncTranscriptionSessionsWithStreamingResponse:
|
||||
def __init__(self, transcription_sessions: AsyncTranscriptionSessions) -> None:
|
||||
self._transcription_sessions = transcription_sessions
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
transcription_sessions.create,
|
||||
)
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .runs import (
|
||||
Runs,
|
||||
AsyncRuns,
|
||||
RunsWithRawResponse,
|
||||
AsyncRunsWithRawResponse,
|
||||
RunsWithStreamingResponse,
|
||||
AsyncRunsWithStreamingResponse,
|
||||
)
|
||||
from .threads import (
|
||||
Threads,
|
||||
AsyncThreads,
|
||||
ThreadsWithRawResponse,
|
||||
AsyncThreadsWithRawResponse,
|
||||
ThreadsWithStreamingResponse,
|
||||
AsyncThreadsWithStreamingResponse,
|
||||
)
|
||||
from .messages import (
|
||||
Messages,
|
||||
AsyncMessages,
|
||||
MessagesWithRawResponse,
|
||||
AsyncMessagesWithRawResponse,
|
||||
MessagesWithStreamingResponse,
|
||||
AsyncMessagesWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Runs",
|
||||
"AsyncRuns",
|
||||
"RunsWithRawResponse",
|
||||
"AsyncRunsWithRawResponse",
|
||||
"RunsWithStreamingResponse",
|
||||
"AsyncRunsWithStreamingResponse",
|
||||
"Messages",
|
||||
"AsyncMessages",
|
||||
"MessagesWithRawResponse",
|
||||
"AsyncMessagesWithRawResponse",
|
||||
"MessagesWithStreamingResponse",
|
||||
"AsyncMessagesWithStreamingResponse",
|
||||
"Threads",
|
||||
"AsyncThreads",
|
||||
"ThreadsWithRawResponse",
|
||||
"AsyncThreadsWithRawResponse",
|
||||
"ThreadsWithStreamingResponse",
|
||||
"AsyncThreadsWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,722 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import typing_extensions
|
||||
from typing import Union, Iterable, Optional
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ...._utils import maybe_transform, async_maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ....pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ...._base_client import (
|
||||
AsyncPaginator,
|
||||
make_request_options,
|
||||
)
|
||||
from ....types.beta.threads import message_list_params, message_create_params, message_update_params
|
||||
from ....types.beta.threads.message import Message
|
||||
from ....types.shared_params.metadata import Metadata
|
||||
from ....types.beta.threads.message_deleted import MessageDeleted
|
||||
from ....types.beta.threads.message_content_part_param import MessageContentPartParam
|
||||
|
||||
__all__ = ["Messages", "AsyncMessages"]
|
||||
|
||||
|
||||
class Messages(SyncAPIResource):
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> MessagesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return MessagesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> MessagesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return MessagesWithStreamingResponse(self)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def create(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
content: Union[str, Iterable[MessageContentPartParam]],
|
||||
role: Literal["user", "assistant"],
|
||||
attachments: Optional[Iterable[message_create_params.Attachment]] | Omit = omit,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Message:
|
||||
"""
|
||||
Create a message.
|
||||
|
||||
Args:
|
||||
content: The text contents of the message.
|
||||
|
||||
role:
|
||||
The role of the entity that is creating the message. Allowed values include:
|
||||
|
||||
- `user`: Indicates the message is sent by an actual user and should be used in
|
||||
most cases to represent user-generated messages.
|
||||
- `assistant`: Indicates the message is generated by the assistant. Use this
|
||||
value to insert messages from the assistant into the conversation.
|
||||
|
||||
attachments: A list of files attached to the message, and the tools they should be added to.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._post(
|
||||
f"/threads/{thread_id}/messages",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"content": content,
|
||||
"role": role,
|
||||
"attachments": attachments,
|
||||
"metadata": metadata,
|
||||
},
|
||||
message_create_params.MessageCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def retrieve(
|
||||
self,
|
||||
message_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Message:
|
||||
"""
|
||||
Retrieve a message.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not message_id:
|
||||
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._get(
|
||||
f"/threads/{thread_id}/messages/{message_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def update(
|
||||
self,
|
||||
message_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Message:
|
||||
"""
|
||||
Modifies a message.
|
||||
|
||||
Args:
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not message_id:
|
||||
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._post(
|
||||
f"/threads/{thread_id}/messages/{message_id}",
|
||||
body=maybe_transform({"metadata": metadata}, message_update_params.MessageUpdateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def list(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
run_id: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[Message]:
|
||||
"""
|
||||
Returns a list of messages for a given thread.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination. `after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
before: A cursor for use in pagination. `before` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
starting with obj_foo, your subsequent call can include before=obj_foo in order
|
||||
to fetch the previous page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
run_id: Filter messages by the run ID that generated them.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
f"/threads/{thread_id}/messages",
|
||||
page=SyncCursorPage[Message],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"run_id": run_id,
|
||||
},
|
||||
message_list_params.MessageListParams,
|
||||
),
|
||||
),
|
||||
model=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def delete(
|
||||
self,
|
||||
message_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> MessageDeleted:
|
||||
"""
|
||||
Deletes a message.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not message_id:
|
||||
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._delete(
|
||||
f"/threads/{thread_id}/messages/{message_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=MessageDeleted,
|
||||
)
|
||||
|
||||
|
||||
class AsyncMessages(AsyncAPIResource):
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncMessagesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncMessagesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncMessagesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncMessagesWithStreamingResponse(self)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
async def create(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
content: Union[str, Iterable[MessageContentPartParam]],
|
||||
role: Literal["user", "assistant"],
|
||||
attachments: Optional[Iterable[message_create_params.Attachment]] | Omit = omit,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Message:
|
||||
"""
|
||||
Create a message.
|
||||
|
||||
Args:
|
||||
content: The text contents of the message.
|
||||
|
||||
role:
|
||||
The role of the entity that is creating the message. Allowed values include:
|
||||
|
||||
- `user`: Indicates the message is sent by an actual user and should be used in
|
||||
most cases to represent user-generated messages.
|
||||
- `assistant`: Indicates the message is generated by the assistant. Use this
|
||||
value to insert messages from the assistant into the conversation.
|
||||
|
||||
attachments: A list of files attached to the message, and the tools they should be added to.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
f"/threads/{thread_id}/messages",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"content": content,
|
||||
"role": role,
|
||||
"attachments": attachments,
|
||||
"metadata": metadata,
|
||||
},
|
||||
message_create_params.MessageCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
async def retrieve(
|
||||
self,
|
||||
message_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Message:
|
||||
"""
|
||||
Retrieve a message.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not message_id:
|
||||
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._get(
|
||||
f"/threads/{thread_id}/messages/{message_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
async def update(
|
||||
self,
|
||||
message_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Message:
|
||||
"""
|
||||
Modifies a message.
|
||||
|
||||
Args:
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not message_id:
|
||||
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
f"/threads/{thread_id}/messages/{message_id}",
|
||||
body=await async_maybe_transform({"metadata": metadata}, message_update_params.MessageUpdateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def list(
|
||||
self,
|
||||
thread_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
run_id: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[Message, AsyncCursorPage[Message]]:
|
||||
"""
|
||||
Returns a list of messages for a given thread.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination. `after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
before: A cursor for use in pagination. `before` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
starting with obj_foo, your subsequent call can include before=obj_foo in order
|
||||
to fetch the previous page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
run_id: Filter messages by the run ID that generated them.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
f"/threads/{thread_id}/messages",
|
||||
page=AsyncCursorPage[Message],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"run_id": run_id,
|
||||
},
|
||||
message_list_params.MessageListParams,
|
||||
),
|
||||
),
|
||||
model=Message,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
async def delete(
|
||||
self,
|
||||
message_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> MessageDeleted:
|
||||
"""
|
||||
Deletes a message.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not message_id:
|
||||
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._delete(
|
||||
f"/threads/{thread_id}/messages/{message_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=MessageDeleted,
|
||||
)
|
||||
|
||||
|
||||
class MessagesWithRawResponse:
|
||||
def __init__(self, messages: Messages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.create = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
messages.create, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
messages.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.update = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
messages.update, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
messages.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.delete = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
messages.delete, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AsyncMessagesWithRawResponse:
|
||||
def __init__(self, messages: AsyncMessages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.create = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
messages.create, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
messages.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.update = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
messages.update, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
messages.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.delete = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
messages.delete, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class MessagesWithStreamingResponse:
|
||||
def __init__(self, messages: Messages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.create = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
messages.create, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
messages.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.update = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
messages.update, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
messages.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.delete = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
messages.delete, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AsyncMessagesWithStreamingResponse:
|
||||
def __init__(self, messages: AsyncMessages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.create = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
messages.create, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
messages.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.update = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
messages.update, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
messages.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.delete = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
messages.delete, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .runs import (
|
||||
Runs,
|
||||
AsyncRuns,
|
||||
RunsWithRawResponse,
|
||||
AsyncRunsWithRawResponse,
|
||||
RunsWithStreamingResponse,
|
||||
AsyncRunsWithStreamingResponse,
|
||||
)
|
||||
from .steps import (
|
||||
Steps,
|
||||
AsyncSteps,
|
||||
StepsWithRawResponse,
|
||||
AsyncStepsWithRawResponse,
|
||||
StepsWithStreamingResponse,
|
||||
AsyncStepsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Steps",
|
||||
"AsyncSteps",
|
||||
"StepsWithRawResponse",
|
||||
"AsyncStepsWithRawResponse",
|
||||
"StepsWithStreamingResponse",
|
||||
"AsyncStepsWithStreamingResponse",
|
||||
"Runs",
|
||||
"AsyncRuns",
|
||||
"RunsWithRawResponse",
|
||||
"AsyncRunsWithRawResponse",
|
||||
"RunsWithStreamingResponse",
|
||||
"AsyncRunsWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,403 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import typing_extensions
|
||||
from typing import List
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from ..... import _legacy_response
|
||||
from ....._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ....._utils import maybe_transform, async_maybe_transform
|
||||
from ....._compat import cached_property
|
||||
from ....._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ....._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from .....pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ....._base_client import AsyncPaginator, make_request_options
|
||||
from .....types.beta.threads.runs import step_list_params, step_retrieve_params
|
||||
from .....types.beta.threads.runs.run_step import RunStep
|
||||
from .....types.beta.threads.runs.run_step_include import RunStepInclude
|
||||
|
||||
__all__ = ["Steps", "AsyncSteps"]
|
||||
|
||||
|
||||
class Steps(SyncAPIResource):
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> StepsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return StepsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> StepsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return StepsWithStreamingResponse(self)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def retrieve(
|
||||
self,
|
||||
step_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
run_id: str,
|
||||
include: List[RunStepInclude] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunStep:
|
||||
"""
|
||||
Retrieves a run step.
|
||||
|
||||
Args:
|
||||
include: A list of additional fields to include in the response. Currently the only
|
||||
supported value is `step_details.tool_calls[*].file_search.results[*].content`
|
||||
to fetch the file search result content.
|
||||
|
||||
See the
|
||||
[file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings)
|
||||
for more information.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
if not step_id:
|
||||
raise ValueError(f"Expected a non-empty value for `step_id` but received {step_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._get(
|
||||
f"/threads/{thread_id}/runs/{run_id}/steps/{step_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform({"include": include}, step_retrieve_params.StepRetrieveParams),
|
||||
),
|
||||
cast_to=RunStep,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def list(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
include: List[RunStepInclude] | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[RunStep]:
|
||||
"""
|
||||
Returns a list of run steps belonging to a run.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination. `after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
before: A cursor for use in pagination. `before` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
starting with obj_foo, your subsequent call can include before=obj_foo in order
|
||||
to fetch the previous page of the list.
|
||||
|
||||
include: A list of additional fields to include in the response. Currently the only
|
||||
supported value is `step_details.tool_calls[*].file_search.results[*].content`
|
||||
to fetch the file search result content.
|
||||
|
||||
See the
|
||||
[file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings)
|
||||
for more information.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
f"/threads/{thread_id}/runs/{run_id}/steps",
|
||||
page=SyncCursorPage[RunStep],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"include": include,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
step_list_params.StepListParams,
|
||||
),
|
||||
),
|
||||
model=RunStep,
|
||||
)
|
||||
|
||||
|
||||
class AsyncSteps(AsyncAPIResource):
|
||||
"""Build Assistants that can call models and use tools."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncStepsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncStepsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncStepsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncStepsWithStreamingResponse(self)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
async def retrieve(
|
||||
self,
|
||||
step_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
run_id: str,
|
||||
include: List[RunStepInclude] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunStep:
|
||||
"""
|
||||
Retrieves a run step.
|
||||
|
||||
Args:
|
||||
include: A list of additional fields to include in the response. Currently the only
|
||||
supported value is `step_details.tool_calls[*].file_search.results[*].content`
|
||||
to fetch the file search result content.
|
||||
|
||||
See the
|
||||
[file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings)
|
||||
for more information.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
if not step_id:
|
||||
raise ValueError(f"Expected a non-empty value for `step_id` but received {step_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return await self._get(
|
||||
f"/threads/{thread_id}/runs/{run_id}/steps/{step_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=await async_maybe_transform({"include": include}, step_retrieve_params.StepRetrieveParams),
|
||||
),
|
||||
cast_to=RunStep,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The Assistants API is deprecated in favor of the Responses API")
|
||||
def list(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
thread_id: str,
|
||||
after: str | Omit = omit,
|
||||
before: str | Omit = omit,
|
||||
include: List[RunStepInclude] | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[RunStep, AsyncCursorPage[RunStep]]:
|
||||
"""
|
||||
Returns a list of run steps belonging to a run.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination. `after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
before: A cursor for use in pagination. `before` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
starting with obj_foo, your subsequent call can include before=obj_foo in order
|
||||
to fetch the previous page of the list.
|
||||
|
||||
include: A list of additional fields to include in the response. Currently the only
|
||||
supported value is `step_details.tool_calls[*].file_search.results[*].content`
|
||||
to fetch the file search result content.
|
||||
|
||||
See the
|
||||
[file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings)
|
||||
for more information.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not thread_id:
|
||||
raise ValueError(f"Expected a non-empty value for `thread_id` but received {thread_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
extra_headers = {"OpenAI-Beta": "assistants=v2", **(extra_headers or {})}
|
||||
return self._get_api_list(
|
||||
f"/threads/{thread_id}/runs/{run_id}/steps",
|
||||
page=AsyncCursorPage[RunStep],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"before": before,
|
||||
"include": include,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
step_list_params.StepListParams,
|
||||
),
|
||||
),
|
||||
model=RunStep,
|
||||
)
|
||||
|
||||
|
||||
class StepsWithRawResponse:
|
||||
def __init__(self, steps: Steps) -> None:
|
||||
self._steps = steps
|
||||
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
steps.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
steps.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AsyncStepsWithRawResponse:
|
||||
def __init__(self, steps: AsyncSteps) -> None:
|
||||
self._steps = steps
|
||||
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
steps.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
steps.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class StepsWithStreamingResponse:
|
||||
def __init__(self, steps: Steps) -> None:
|
||||
self._steps = steps
|
||||
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
steps.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
steps.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AsyncStepsWithStreamingResponse:
|
||||
def __init__(self, steps: AsyncSteps) -> None:
|
||||
self._steps = steps
|
||||
|
||||
self.retrieve = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
steps.retrieve, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
self.list = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
steps.list, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .chat import (
|
||||
Chat,
|
||||
AsyncChat,
|
||||
ChatWithRawResponse,
|
||||
AsyncChatWithRawResponse,
|
||||
ChatWithStreamingResponse,
|
||||
AsyncChatWithStreamingResponse,
|
||||
)
|
||||
from .completions import (
|
||||
Completions,
|
||||
AsyncCompletions,
|
||||
CompletionsWithRawResponse,
|
||||
AsyncCompletionsWithRawResponse,
|
||||
CompletionsWithStreamingResponse,
|
||||
AsyncCompletionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Completions",
|
||||
"AsyncCompletions",
|
||||
"CompletionsWithRawResponse",
|
||||
"AsyncCompletionsWithRawResponse",
|
||||
"CompletionsWithStreamingResponse",
|
||||
"AsyncCompletionsWithStreamingResponse",
|
||||
"Chat",
|
||||
"AsyncChat",
|
||||
"ChatWithRawResponse",
|
||||
"AsyncChatWithRawResponse",
|
||||
"ChatWithStreamingResponse",
|
||||
"AsyncChatWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
120
.venv/lib/python3.10/site-packages/openai/resources/chat/chat.py
Normal file
120
.venv/lib/python3.10/site-packages/openai/resources/chat/chat.py
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from .completions.completions import (
|
||||
Completions,
|
||||
AsyncCompletions,
|
||||
CompletionsWithRawResponse,
|
||||
AsyncCompletionsWithRawResponse,
|
||||
CompletionsWithStreamingResponse,
|
||||
AsyncCompletionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = ["Chat", "AsyncChat"]
|
||||
|
||||
|
||||
class Chat(SyncAPIResource):
|
||||
@cached_property
|
||||
def completions(self) -> Completions:
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
return Completions(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ChatWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ChatWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ChatWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ChatWithStreamingResponse(self)
|
||||
|
||||
|
||||
class AsyncChat(AsyncAPIResource):
|
||||
@cached_property
|
||||
def completions(self) -> AsyncCompletions:
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
return AsyncCompletions(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncChatWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncChatWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncChatWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncChatWithStreamingResponse(self)
|
||||
|
||||
|
||||
class ChatWithRawResponse:
|
||||
def __init__(self, chat: Chat) -> None:
|
||||
self._chat = chat
|
||||
|
||||
@cached_property
|
||||
def completions(self) -> CompletionsWithRawResponse:
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
return CompletionsWithRawResponse(self._chat.completions)
|
||||
|
||||
|
||||
class AsyncChatWithRawResponse:
|
||||
def __init__(self, chat: AsyncChat) -> None:
|
||||
self._chat = chat
|
||||
|
||||
@cached_property
|
||||
def completions(self) -> AsyncCompletionsWithRawResponse:
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
return AsyncCompletionsWithRawResponse(self._chat.completions)
|
||||
|
||||
|
||||
class ChatWithStreamingResponse:
|
||||
def __init__(self, chat: Chat) -> None:
|
||||
self._chat = chat
|
||||
|
||||
@cached_property
|
||||
def completions(self) -> CompletionsWithStreamingResponse:
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
return CompletionsWithStreamingResponse(self._chat.completions)
|
||||
|
||||
|
||||
class AsyncChatWithStreamingResponse:
|
||||
def __init__(self, chat: AsyncChat) -> None:
|
||||
self._chat = chat
|
||||
|
||||
@cached_property
|
||||
def completions(self) -> AsyncCompletionsWithStreamingResponse:
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
return AsyncCompletionsWithStreamingResponse(self._chat.completions)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .messages import (
|
||||
Messages,
|
||||
AsyncMessages,
|
||||
MessagesWithRawResponse,
|
||||
AsyncMessagesWithRawResponse,
|
||||
MessagesWithStreamingResponse,
|
||||
AsyncMessagesWithStreamingResponse,
|
||||
)
|
||||
from .completions import (
|
||||
Completions,
|
||||
AsyncCompletions,
|
||||
CompletionsWithRawResponse,
|
||||
AsyncCompletionsWithRawResponse,
|
||||
CompletionsWithStreamingResponse,
|
||||
AsyncCompletionsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Messages",
|
||||
"AsyncMessages",
|
||||
"MessagesWithRawResponse",
|
||||
"AsyncMessagesWithRawResponse",
|
||||
"MessagesWithStreamingResponse",
|
||||
"AsyncMessagesWithStreamingResponse",
|
||||
"Completions",
|
||||
"AsyncCompletions",
|
||||
"CompletionsWithRawResponse",
|
||||
"AsyncCompletionsWithRawResponse",
|
||||
"CompletionsWithStreamingResponse",
|
||||
"AsyncCompletionsWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,220 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ...._utils import maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ....pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ...._base_client import AsyncPaginator, make_request_options
|
||||
from ....types.chat.completions import message_list_params
|
||||
from ....types.chat.chat_completion_store_message import ChatCompletionStoreMessage
|
||||
|
||||
__all__ = ["Messages", "AsyncMessages"]
|
||||
|
||||
|
||||
class Messages(SyncAPIResource):
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> MessagesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return MessagesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> MessagesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return MessagesWithStreamingResponse(self)
|
||||
|
||||
def list(
|
||||
self,
|
||||
completion_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[ChatCompletionStoreMessage]:
|
||||
"""Get the messages in a stored chat completion.
|
||||
|
||||
Only Chat Completions that have
|
||||
been created with the `store` parameter set to `true` will be returned.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last message from the previous pagination request.
|
||||
|
||||
limit: Number of messages to retrieve.
|
||||
|
||||
order: Sort order for messages by timestamp. Use `asc` for ascending order or `desc`
|
||||
for descending order. Defaults to `asc`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not completion_id:
|
||||
raise ValueError(f"Expected a non-empty value for `completion_id` but received {completion_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/chat/completions/{completion_id}/messages",
|
||||
page=SyncCursorPage[ChatCompletionStoreMessage],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
message_list_params.MessageListParams,
|
||||
),
|
||||
),
|
||||
model=ChatCompletionStoreMessage,
|
||||
)
|
||||
|
||||
|
||||
class AsyncMessages(AsyncAPIResource):
|
||||
"""
|
||||
Given a list of messages comprising a conversation, the model will return a response.
|
||||
"""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncMessagesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncMessagesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncMessagesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncMessagesWithStreamingResponse(self)
|
||||
|
||||
def list(
|
||||
self,
|
||||
completion_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[ChatCompletionStoreMessage, AsyncCursorPage[ChatCompletionStoreMessage]]:
|
||||
"""Get the messages in a stored chat completion.
|
||||
|
||||
Only Chat Completions that have
|
||||
been created with the `store` parameter set to `true` will be returned.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last message from the previous pagination request.
|
||||
|
||||
limit: Number of messages to retrieve.
|
||||
|
||||
order: Sort order for messages by timestamp. Use `asc` for ascending order or `desc`
|
||||
for descending order. Defaults to `asc`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not completion_id:
|
||||
raise ValueError(f"Expected a non-empty value for `completion_id` but received {completion_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/chat/completions/{completion_id}/messages",
|
||||
page=AsyncCursorPage[ChatCompletionStoreMessage],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
message_list_params.MessageListParams,
|
||||
),
|
||||
),
|
||||
model=ChatCompletionStoreMessage,
|
||||
)
|
||||
|
||||
|
||||
class MessagesWithRawResponse:
|
||||
def __init__(self, messages: Messages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
messages.list,
|
||||
)
|
||||
|
||||
|
||||
class AsyncMessagesWithRawResponse:
|
||||
def __init__(self, messages: AsyncMessages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
messages.list,
|
||||
)
|
||||
|
||||
|
||||
class MessagesWithStreamingResponse:
|
||||
def __init__(self, messages: Messages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.list = to_streamed_response_wrapper(
|
||||
messages.list,
|
||||
)
|
||||
|
||||
|
||||
class AsyncMessagesWithStreamingResponse:
|
||||
def __init__(self, messages: AsyncMessages) -> None:
|
||||
self._messages = messages
|
||||
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
messages.list,
|
||||
)
|
||||
1186
.venv/lib/python3.10/site-packages/openai/resources/completions.py
Normal file
1186
.venv/lib/python3.10/site-packages/openai/resources/completions.py
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .files import (
|
||||
Files,
|
||||
AsyncFiles,
|
||||
FilesWithRawResponse,
|
||||
AsyncFilesWithRawResponse,
|
||||
FilesWithStreamingResponse,
|
||||
AsyncFilesWithStreamingResponse,
|
||||
)
|
||||
from .containers import (
|
||||
Containers,
|
||||
AsyncContainers,
|
||||
ContainersWithRawResponse,
|
||||
AsyncContainersWithRawResponse,
|
||||
ContainersWithStreamingResponse,
|
||||
AsyncContainersWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Files",
|
||||
"AsyncFiles",
|
||||
"FilesWithRawResponse",
|
||||
"AsyncFilesWithRawResponse",
|
||||
"FilesWithStreamingResponse",
|
||||
"AsyncFilesWithStreamingResponse",
|
||||
"Containers",
|
||||
"AsyncContainers",
|
||||
"ContainersWithRawResponse",
|
||||
"AsyncContainersWithRawResponse",
|
||||
"ContainersWithStreamingResponse",
|
||||
"AsyncContainersWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,543 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Iterable
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from ... import _legacy_response
|
||||
from ...types import container_list_params, container_create_params
|
||||
from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given
|
||||
from ..._utils import maybe_transform, async_maybe_transform
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from .files.files import (
|
||||
Files,
|
||||
AsyncFiles,
|
||||
FilesWithRawResponse,
|
||||
AsyncFilesWithRawResponse,
|
||||
FilesWithStreamingResponse,
|
||||
AsyncFilesWithStreamingResponse,
|
||||
)
|
||||
from ...pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ..._base_client import AsyncPaginator, make_request_options
|
||||
from ...types.container_list_response import ContainerListResponse
|
||||
from ...types.container_create_response import ContainerCreateResponse
|
||||
from ...types.container_retrieve_response import ContainerRetrieveResponse
|
||||
|
||||
__all__ = ["Containers", "AsyncContainers"]
|
||||
|
||||
|
||||
class Containers(SyncAPIResource):
|
||||
@cached_property
|
||||
def files(self) -> Files:
|
||||
return Files(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ContainersWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ContainersWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ContainersWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ContainersWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
expires_after: container_create_params.ExpiresAfter | Omit = omit,
|
||||
file_ids: SequenceNotStr[str] | Omit = omit,
|
||||
memory_limit: Literal["1g", "4g", "16g", "64g"] | Omit = omit,
|
||||
network_policy: container_create_params.NetworkPolicy | Omit = omit,
|
||||
skills: Iterable[container_create_params.Skill] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ContainerCreateResponse:
|
||||
"""
|
||||
Create Container
|
||||
|
||||
Args:
|
||||
name: Name of the container to create.
|
||||
|
||||
expires_after: Container expiration time in seconds relative to the 'anchor' time.
|
||||
|
||||
file_ids: IDs of files to copy to the container.
|
||||
|
||||
memory_limit: Optional memory limit for the container. Defaults to "1g".
|
||||
|
||||
network_policy: Network access policy for the container.
|
||||
|
||||
skills: An optional list of skills referenced by id or inline data.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._post(
|
||||
"/containers",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"name": name,
|
||||
"expires_after": expires_after,
|
||||
"file_ids": file_ids,
|
||||
"memory_limit": memory_limit,
|
||||
"network_policy": network_policy,
|
||||
"skills": skills,
|
||||
},
|
||||
container_create_params.ContainerCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ContainerCreateResponse,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ContainerRetrieveResponse:
|
||||
"""
|
||||
Retrieve Container
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
return self._get(
|
||||
f"/containers/{container_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ContainerRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[ContainerListResponse]:
|
||||
"""List Containers
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
name: Filter results by container name.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/containers",
|
||||
page=SyncCursorPage[ContainerListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"name": name,
|
||||
"order": order,
|
||||
},
|
||||
container_list_params.ContainerListParams,
|
||||
),
|
||||
),
|
||||
model=ContainerListResponse,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> None:
|
||||
"""
|
||||
Delete Container
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
||||
return self._delete(
|
||||
f"/containers/{container_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=NoneType,
|
||||
)
|
||||
|
||||
|
||||
class AsyncContainers(AsyncAPIResource):
|
||||
@cached_property
|
||||
def files(self) -> AsyncFiles:
|
||||
return AsyncFiles(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncContainersWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncContainersWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncContainersWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncContainersWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
expires_after: container_create_params.ExpiresAfter | Omit = omit,
|
||||
file_ids: SequenceNotStr[str] | Omit = omit,
|
||||
memory_limit: Literal["1g", "4g", "16g", "64g"] | Omit = omit,
|
||||
network_policy: container_create_params.NetworkPolicy | Omit = omit,
|
||||
skills: Iterable[container_create_params.Skill] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ContainerCreateResponse:
|
||||
"""
|
||||
Create Container
|
||||
|
||||
Args:
|
||||
name: Name of the container to create.
|
||||
|
||||
expires_after: Container expiration time in seconds relative to the 'anchor' time.
|
||||
|
||||
file_ids: IDs of files to copy to the container.
|
||||
|
||||
memory_limit: Optional memory limit for the container. Defaults to "1g".
|
||||
|
||||
network_policy: Network access policy for the container.
|
||||
|
||||
skills: An optional list of skills referenced by id or inline data.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return await self._post(
|
||||
"/containers",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"name": name,
|
||||
"expires_after": expires_after,
|
||||
"file_ids": file_ids,
|
||||
"memory_limit": memory_limit,
|
||||
"network_policy": network_policy,
|
||||
"skills": skills,
|
||||
},
|
||||
container_create_params.ContainerCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ContainerCreateResponse,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ContainerRetrieveResponse:
|
||||
"""
|
||||
Retrieve Container
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
return await self._get(
|
||||
f"/containers/{container_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ContainerRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[ContainerListResponse, AsyncCursorPage[ContainerListResponse]]:
|
||||
"""List Containers
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
name: Filter results by container name.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/containers",
|
||||
page=AsyncCursorPage[ContainerListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"name": name,
|
||||
"order": order,
|
||||
},
|
||||
container_list_params.ContainerListParams,
|
||||
),
|
||||
),
|
||||
model=ContainerListResponse,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> None:
|
||||
"""
|
||||
Delete Container
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
||||
return await self._delete(
|
||||
f"/containers/{container_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=NoneType,
|
||||
)
|
||||
|
||||
|
||||
class ContainersWithRawResponse:
|
||||
def __init__(self, containers: Containers) -> None:
|
||||
self._containers = containers
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
containers.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
containers.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
containers.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
containers.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def files(self) -> FilesWithRawResponse:
|
||||
return FilesWithRawResponse(self._containers.files)
|
||||
|
||||
|
||||
class AsyncContainersWithRawResponse:
|
||||
def __init__(self, containers: AsyncContainers) -> None:
|
||||
self._containers = containers
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
containers.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
containers.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
containers.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
containers.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def files(self) -> AsyncFilesWithRawResponse:
|
||||
return AsyncFilesWithRawResponse(self._containers.files)
|
||||
|
||||
|
||||
class ContainersWithStreamingResponse:
|
||||
def __init__(self, containers: Containers) -> None:
|
||||
self._containers = containers
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
containers.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
containers.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
containers.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
containers.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def files(self) -> FilesWithStreamingResponse:
|
||||
return FilesWithStreamingResponse(self._containers.files)
|
||||
|
||||
|
||||
class AsyncContainersWithStreamingResponse:
|
||||
def __init__(self, containers: AsyncContainers) -> None:
|
||||
self._containers = containers
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
containers.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
containers.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
containers.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
containers.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def files(self) -> AsyncFilesWithStreamingResponse:
|
||||
return AsyncFilesWithStreamingResponse(self._containers.files)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .files import (
|
||||
Files,
|
||||
AsyncFiles,
|
||||
FilesWithRawResponse,
|
||||
AsyncFilesWithRawResponse,
|
||||
FilesWithStreamingResponse,
|
||||
AsyncFilesWithStreamingResponse,
|
||||
)
|
||||
from .content import (
|
||||
Content,
|
||||
AsyncContent,
|
||||
ContentWithRawResponse,
|
||||
AsyncContentWithRawResponse,
|
||||
ContentWithStreamingResponse,
|
||||
AsyncContentWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Content",
|
||||
"AsyncContent",
|
||||
"ContentWithRawResponse",
|
||||
"AsyncContentWithRawResponse",
|
||||
"ContentWithStreamingResponse",
|
||||
"AsyncContentWithStreamingResponse",
|
||||
"Files",
|
||||
"AsyncFiles",
|
||||
"FilesWithRawResponse",
|
||||
"AsyncFilesWithRawResponse",
|
||||
"FilesWithStreamingResponse",
|
||||
"AsyncFilesWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,173 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Query, Headers, NotGiven, not_given
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import (
|
||||
StreamedBinaryAPIResponse,
|
||||
AsyncStreamedBinaryAPIResponse,
|
||||
to_custom_streamed_response_wrapper,
|
||||
async_to_custom_streamed_response_wrapper,
|
||||
)
|
||||
from ...._base_client import make_request_options
|
||||
|
||||
__all__ = ["Content", "AsyncContent"]
|
||||
|
||||
|
||||
class Content(SyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ContentWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ContentWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ContentWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ContentWithStreamingResponse(self)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
container_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> _legacy_response.HttpxBinaryResponseContent:
|
||||
"""
|
||||
Retrieve Container File Content
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
extra_headers = {"Accept": "application/binary", **(extra_headers or {})}
|
||||
return self._get(
|
||||
f"/containers/{container_id}/files/{file_id}/content",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_legacy_response.HttpxBinaryResponseContent,
|
||||
)
|
||||
|
||||
|
||||
class AsyncContent(AsyncAPIResource):
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncContentWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncContentWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncContentWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncContentWithStreamingResponse(self)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
container_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> _legacy_response.HttpxBinaryResponseContent:
|
||||
"""
|
||||
Retrieve Container File Content
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
extra_headers = {"Accept": "application/binary", **(extra_headers or {})}
|
||||
return await self._get(
|
||||
f"/containers/{container_id}/files/{file_id}/content",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_legacy_response.HttpxBinaryResponseContent,
|
||||
)
|
||||
|
||||
|
||||
class ContentWithRawResponse:
|
||||
def __init__(self, content: Content) -> None:
|
||||
self._content = content
|
||||
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
content.retrieve,
|
||||
)
|
||||
|
||||
|
||||
class AsyncContentWithRawResponse:
|
||||
def __init__(self, content: AsyncContent) -> None:
|
||||
self._content = content
|
||||
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
content.retrieve,
|
||||
)
|
||||
|
||||
|
||||
class ContentWithStreamingResponse:
|
||||
def __init__(self, content: Content) -> None:
|
||||
self._content = content
|
||||
|
||||
self.retrieve = to_custom_streamed_response_wrapper(
|
||||
content.retrieve,
|
||||
StreamedBinaryAPIResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncContentWithStreamingResponse:
|
||||
def __init__(self, content: AsyncContent) -> None:
|
||||
self._content = content
|
||||
|
||||
self.retrieve = async_to_custom_streamed_response_wrapper(
|
||||
content.retrieve,
|
||||
AsyncStreamedBinaryAPIResponse,
|
||||
)
|
||||
|
|
@ -0,0 +1,547 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Mapping, cast
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from .content import (
|
||||
Content,
|
||||
AsyncContent,
|
||||
ContentWithRawResponse,
|
||||
AsyncContentWithRawResponse,
|
||||
ContentWithStreamingResponse,
|
||||
AsyncContentWithStreamingResponse,
|
||||
)
|
||||
from ...._types import Body, Omit, Query, Headers, NoneType, NotGiven, FileTypes, omit, not_given
|
||||
from ...._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ....pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ...._base_client import AsyncPaginator, make_request_options
|
||||
from ....types.containers import file_list_params, file_create_params
|
||||
from ....types.containers.file_list_response import FileListResponse
|
||||
from ....types.containers.file_create_response import FileCreateResponse
|
||||
from ....types.containers.file_retrieve_response import FileRetrieveResponse
|
||||
|
||||
__all__ = ["Files", "AsyncFiles"]
|
||||
|
||||
|
||||
class Files(SyncAPIResource):
|
||||
@cached_property
|
||||
def content(self) -> Content:
|
||||
return Content(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> FilesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return FilesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> FilesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return FilesWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
file: FileTypes | Omit = omit,
|
||||
file_id: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileCreateResponse:
|
||||
"""
|
||||
Create a Container File
|
||||
|
||||
You can send either a multipart/form-data request with the raw file content, or
|
||||
a JSON request with a file ID.
|
||||
|
||||
Args:
|
||||
file: The File object (not file name) to be uploaded.
|
||||
|
||||
file_id: Name of the file to create.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
body = deepcopy_minimal(
|
||||
{
|
||||
"file": file,
|
||||
"file_id": file_id,
|
||||
}
|
||||
)
|
||||
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
||||
if files:
|
||||
# It should be noted that the actual Content-Type header that will be
|
||||
# sent to the server will contain a `boundary` parameter, e.g.
|
||||
# multipart/form-data; boundary=---abc--
|
||||
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
||||
return self._post(
|
||||
f"/containers/{container_id}/files",
|
||||
body=maybe_transform(body, file_create_params.FileCreateParams),
|
||||
files=files,
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileCreateResponse,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
container_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileRetrieveResponse:
|
||||
"""
|
||||
Retrieve Container File
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return self._get(
|
||||
f"/containers/{container_id}/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[FileListResponse]:
|
||||
"""List Container files
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/containers/{container_id}/files",
|
||||
page=SyncCursorPage[FileListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
file_list_params.FileListParams,
|
||||
),
|
||||
),
|
||||
model=FileListResponse,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
container_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> None:
|
||||
"""
|
||||
Delete Container File
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
||||
return self._delete(
|
||||
f"/containers/{container_id}/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=NoneType,
|
||||
)
|
||||
|
||||
|
||||
class AsyncFiles(AsyncAPIResource):
|
||||
@cached_property
|
||||
def content(self) -> AsyncContent:
|
||||
return AsyncContent(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncFilesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncFilesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncFilesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncFilesWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
file: FileTypes | Omit = omit,
|
||||
file_id: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileCreateResponse:
|
||||
"""
|
||||
Create a Container File
|
||||
|
||||
You can send either a multipart/form-data request with the raw file content, or
|
||||
a JSON request with a file ID.
|
||||
|
||||
Args:
|
||||
file: The File object (not file name) to be uploaded.
|
||||
|
||||
file_id: Name of the file to create.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
body = deepcopy_minimal(
|
||||
{
|
||||
"file": file,
|
||||
"file_id": file_id,
|
||||
}
|
||||
)
|
||||
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
||||
if files:
|
||||
# It should be noted that the actual Content-Type header that will be
|
||||
# sent to the server will contain a `boundary` parameter, e.g.
|
||||
# multipart/form-data; boundary=---abc--
|
||||
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
f"/containers/{container_id}/files",
|
||||
body=await async_maybe_transform(body, file_create_params.FileCreateParams),
|
||||
files=files,
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileCreateResponse,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
container_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileRetrieveResponse:
|
||||
"""
|
||||
Retrieve Container File
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return await self._get(
|
||||
f"/containers/{container_id}/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
container_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[FileListResponse, AsyncCursorPage[FileListResponse]]:
|
||||
"""List Container files
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/containers/{container_id}/files",
|
||||
page=AsyncCursorPage[FileListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
file_list_params.FileListParams,
|
||||
),
|
||||
),
|
||||
model=FileListResponse,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
container_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> None:
|
||||
"""
|
||||
Delete Container File
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not container_id:
|
||||
raise ValueError(f"Expected a non-empty value for `container_id` but received {container_id!r}")
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
||||
return await self._delete(
|
||||
f"/containers/{container_id}/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=NoneType,
|
||||
)
|
||||
|
||||
|
||||
class FilesWithRawResponse:
|
||||
def __init__(self, files: Files) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def content(self) -> ContentWithRawResponse:
|
||||
return ContentWithRawResponse(self._files.content)
|
||||
|
||||
|
||||
class AsyncFilesWithRawResponse:
|
||||
def __init__(self, files: AsyncFiles) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def content(self) -> AsyncContentWithRawResponse:
|
||||
return AsyncContentWithRawResponse(self._files.content)
|
||||
|
||||
|
||||
class FilesWithStreamingResponse:
|
||||
def __init__(self, files: Files) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def content(self) -> ContentWithStreamingResponse:
|
||||
return ContentWithStreamingResponse(self._files.content)
|
||||
|
||||
|
||||
class AsyncFilesWithStreamingResponse:
|
||||
def __init__(self, files: AsyncFiles) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def content(self) -> AsyncContentWithStreamingResponse:
|
||||
return AsyncContentWithStreamingResponse(self._files.content)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .items import (
|
||||
Items,
|
||||
AsyncItems,
|
||||
ItemsWithRawResponse,
|
||||
AsyncItemsWithRawResponse,
|
||||
ItemsWithStreamingResponse,
|
||||
AsyncItemsWithStreamingResponse,
|
||||
)
|
||||
from .conversations import (
|
||||
Conversations,
|
||||
AsyncConversations,
|
||||
ConversationsWithRawResponse,
|
||||
AsyncConversationsWithRawResponse,
|
||||
ConversationsWithStreamingResponse,
|
||||
AsyncConversationsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Items",
|
||||
"AsyncItems",
|
||||
"ItemsWithRawResponse",
|
||||
"AsyncItemsWithRawResponse",
|
||||
"ItemsWithStreamingResponse",
|
||||
"AsyncItemsWithStreamingResponse",
|
||||
"Conversations",
|
||||
"AsyncConversations",
|
||||
"ConversationsWithRawResponse",
|
||||
"AsyncConversationsWithRawResponse",
|
||||
"ConversationsWithStreamingResponse",
|
||||
"AsyncConversationsWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,42 @@
|
|||
# Conversations
|
||||
|
||||
Types:
|
||||
|
||||
```python
|
||||
from openai.types.conversations import (
|
||||
ComputerScreenshotContent,
|
||||
Conversation,
|
||||
ConversationDeleted,
|
||||
ConversationDeletedResource,
|
||||
Message,
|
||||
SummaryTextContent,
|
||||
TextContent,
|
||||
InputTextContent,
|
||||
OutputTextContent,
|
||||
RefusalContent,
|
||||
InputImageContent,
|
||||
InputFileContent,
|
||||
)
|
||||
```
|
||||
|
||||
Methods:
|
||||
|
||||
- <code title="post /conversations">client.conversations.<a href="./src/openai/resources/conversations/conversations.py">create</a>(\*\*<a href="src/openai/types/conversations/conversation_create_params.py">params</a>) -> <a href="./src/openai/types/conversations/conversation.py">Conversation</a></code>
|
||||
- <code title="get /conversations/{conversation_id}">client.conversations.<a href="./src/openai/resources/conversations/conversations.py">retrieve</a>(conversation_id) -> <a href="./src/openai/types/conversations/conversation.py">Conversation</a></code>
|
||||
- <code title="post /conversations/{conversation_id}">client.conversations.<a href="./src/openai/resources/conversations/conversations.py">update</a>(conversation_id, \*\*<a href="src/openai/types/conversations/conversation_update_params.py">params</a>) -> <a href="./src/openai/types/conversations/conversation.py">Conversation</a></code>
|
||||
- <code title="delete /conversations/{conversation_id}">client.conversations.<a href="./src/openai/resources/conversations/conversations.py">delete</a>(conversation_id) -> <a href="./src/openai/types/conversations/conversation_deleted_resource.py">ConversationDeletedResource</a></code>
|
||||
|
||||
## Items
|
||||
|
||||
Types:
|
||||
|
||||
```python
|
||||
from openai.types.conversations import ConversationItem, ConversationItemList
|
||||
```
|
||||
|
||||
Methods:
|
||||
|
||||
- <code title="post /conversations/{conversation_id}/items">client.conversations.items.<a href="./src/openai/resources/conversations/items.py">create</a>(conversation_id, \*\*<a href="src/openai/types/conversations/item_create_params.py">params</a>) -> <a href="./src/openai/types/conversations/conversation_item_list.py">ConversationItemList</a></code>
|
||||
- <code title="get /conversations/{conversation_id}/items/{item_id}">client.conversations.items.<a href="./src/openai/resources/conversations/items.py">retrieve</a>(item_id, \*, conversation_id, \*\*<a href="src/openai/types/conversations/item_retrieve_params.py">params</a>) -> <a href="./src/openai/types/conversations/conversation_item.py">ConversationItem</a></code>
|
||||
- <code title="get /conversations/{conversation_id}/items">client.conversations.items.<a href="./src/openai/resources/conversations/items.py">list</a>(conversation_id, \*\*<a href="src/openai/types/conversations/item_list_params.py">params</a>) -> <a href="./src/openai/types/conversations/conversation_item.py">SyncConversationCursorPage[ConversationItem]</a></code>
|
||||
- <code title="delete /conversations/{conversation_id}/items/{item_id}">client.conversations.items.<a href="./src/openai/resources/conversations/items.py">delete</a>(item_id, \*, conversation_id) -> <a href="./src/openai/types/conversations/conversation.py">Conversation</a></code>
|
||||
|
|
@ -0,0 +1,496 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Iterable, Optional
|
||||
|
||||
import httpx
|
||||
|
||||
from ... import _legacy_response
|
||||
from .items import (
|
||||
Items,
|
||||
AsyncItems,
|
||||
ItemsWithRawResponse,
|
||||
AsyncItemsWithRawResponse,
|
||||
ItemsWithStreamingResponse,
|
||||
AsyncItemsWithStreamingResponse,
|
||||
)
|
||||
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ..._utils import maybe_transform, async_maybe_transform
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ..._base_client import make_request_options
|
||||
from ...types.conversations import conversation_create_params, conversation_update_params
|
||||
from ...types.shared_params.metadata import Metadata
|
||||
from ...types.conversations.conversation import Conversation
|
||||
from ...types.responses.response_input_item_param import ResponseInputItemParam
|
||||
from ...types.conversations.conversation_deleted_resource import ConversationDeletedResource
|
||||
|
||||
__all__ = ["Conversations", "AsyncConversations"]
|
||||
|
||||
|
||||
class Conversations(SyncAPIResource):
|
||||
"""Manage conversations and conversation items."""
|
||||
|
||||
@cached_property
|
||||
def items(self) -> Items:
|
||||
"""Manage conversations and conversation items."""
|
||||
return Items(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ConversationsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ConversationsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ConversationsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ConversationsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
items: Optional[Iterable[ResponseInputItemParam]] | Omit = omit,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Create a conversation.
|
||||
|
||||
Args:
|
||||
items: Initial items to include in the conversation context. You may add up to 20 items
|
||||
at a time.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._post(
|
||||
"/conversations",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"items": items,
|
||||
"metadata": metadata,
|
||||
},
|
||||
conversation_create_params.ConversationCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Get a conversation
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return self._get(
|
||||
f"/conversations/{conversation_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
def update(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
metadata: Optional[Metadata],
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Update a conversation
|
||||
|
||||
Args:
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return self._post(
|
||||
f"/conversations/{conversation_id}",
|
||||
body=maybe_transform({"metadata": metadata}, conversation_update_params.ConversationUpdateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ConversationDeletedResource:
|
||||
"""Delete a conversation.
|
||||
|
||||
Items in the conversation will not be deleted.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return self._delete(
|
||||
f"/conversations/{conversation_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ConversationDeletedResource,
|
||||
)
|
||||
|
||||
|
||||
class AsyncConversations(AsyncAPIResource):
|
||||
"""Manage conversations and conversation items."""
|
||||
|
||||
@cached_property
|
||||
def items(self) -> AsyncItems:
|
||||
"""Manage conversations and conversation items."""
|
||||
return AsyncItems(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncConversationsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncConversationsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncConversationsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncConversationsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
items: Optional[Iterable[ResponseInputItemParam]] | Omit = omit,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Create a conversation.
|
||||
|
||||
Args:
|
||||
items: Initial items to include in the conversation context. You may add up to 20 items
|
||||
at a time.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return await self._post(
|
||||
"/conversations",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"items": items,
|
||||
"metadata": metadata,
|
||||
},
|
||||
conversation_create_params.ConversationCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Get a conversation
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return await self._get(
|
||||
f"/conversations/{conversation_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
async def update(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
metadata: Optional[Metadata],
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Update a conversation
|
||||
|
||||
Args:
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return await self._post(
|
||||
f"/conversations/{conversation_id}",
|
||||
body=await async_maybe_transform(
|
||||
{"metadata": metadata}, conversation_update_params.ConversationUpdateParams
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ConversationDeletedResource:
|
||||
"""Delete a conversation.
|
||||
|
||||
Items in the conversation will not be deleted.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return await self._delete(
|
||||
f"/conversations/{conversation_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=ConversationDeletedResource,
|
||||
)
|
||||
|
||||
|
||||
class ConversationsWithRawResponse:
|
||||
def __init__(self, conversations: Conversations) -> None:
|
||||
self._conversations = conversations
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
conversations.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
conversations.retrieve,
|
||||
)
|
||||
self.update = _legacy_response.to_raw_response_wrapper(
|
||||
conversations.update,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
conversations.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def items(self) -> ItemsWithRawResponse:
|
||||
"""Manage conversations and conversation items."""
|
||||
return ItemsWithRawResponse(self._conversations.items)
|
||||
|
||||
|
||||
class AsyncConversationsWithRawResponse:
|
||||
def __init__(self, conversations: AsyncConversations) -> None:
|
||||
self._conversations = conversations
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
conversations.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
conversations.retrieve,
|
||||
)
|
||||
self.update = _legacy_response.async_to_raw_response_wrapper(
|
||||
conversations.update,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
conversations.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def items(self) -> AsyncItemsWithRawResponse:
|
||||
"""Manage conversations and conversation items."""
|
||||
return AsyncItemsWithRawResponse(self._conversations.items)
|
||||
|
||||
|
||||
class ConversationsWithStreamingResponse:
|
||||
def __init__(self, conversations: Conversations) -> None:
|
||||
self._conversations = conversations
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
conversations.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
conversations.retrieve,
|
||||
)
|
||||
self.update = to_streamed_response_wrapper(
|
||||
conversations.update,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
conversations.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def items(self) -> ItemsWithStreamingResponse:
|
||||
"""Manage conversations and conversation items."""
|
||||
return ItemsWithStreamingResponse(self._conversations.items)
|
||||
|
||||
|
||||
class AsyncConversationsWithStreamingResponse:
|
||||
def __init__(self, conversations: AsyncConversations) -> None:
|
||||
self._conversations = conversations
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
conversations.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
conversations.retrieve,
|
||||
)
|
||||
self.update = async_to_streamed_response_wrapper(
|
||||
conversations.update,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
conversations.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def items(self) -> AsyncItemsWithStreamingResponse:
|
||||
"""Manage conversations and conversation items."""
|
||||
return AsyncItemsWithStreamingResponse(self._conversations.items)
|
||||
|
|
@ -0,0 +1,561 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, List, Iterable, cast
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from ... import _legacy_response
|
||||
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ..._utils import maybe_transform, async_maybe_transform
|
||||
from ..._compat import cached_property
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ...pagination import SyncConversationCursorPage, AsyncConversationCursorPage
|
||||
from ..._base_client import AsyncPaginator, make_request_options
|
||||
from ...types.conversations import item_list_params, item_create_params, item_retrieve_params
|
||||
from ...types.conversations.conversation import Conversation
|
||||
from ...types.responses.response_includable import ResponseIncludable
|
||||
from ...types.conversations.conversation_item import ConversationItem
|
||||
from ...types.responses.response_input_item_param import ResponseInputItemParam
|
||||
from ...types.conversations.conversation_item_list import ConversationItemList
|
||||
|
||||
__all__ = ["Items", "AsyncItems"]
|
||||
|
||||
|
||||
class Items(SyncAPIResource):
|
||||
"""Manage conversations and conversation items."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> ItemsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return ItemsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> ItemsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return ItemsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
items: Iterable[ResponseInputItemParam],
|
||||
include: List[ResponseIncludable] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ConversationItemList:
|
||||
"""
|
||||
Create items in a conversation with the given ID.
|
||||
|
||||
Args:
|
||||
items: The items to add to the conversation. You may add up to 20 items at a time.
|
||||
|
||||
include: Additional fields to include in the response. See the `include` parameter for
|
||||
[listing Conversation items above](https://platform.openai.com/docs/api-reference/conversations/list-items#conversations_list_items-include)
|
||||
for more information.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return self._post(
|
||||
f"/conversations/{conversation_id}/items",
|
||||
body=maybe_transform({"items": items}, item_create_params.ItemCreateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform({"include": include}, item_create_params.ItemCreateParams),
|
||||
),
|
||||
cast_to=ConversationItemList,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
item_id: str,
|
||||
*,
|
||||
conversation_id: str,
|
||||
include: List[ResponseIncludable] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ConversationItem:
|
||||
"""
|
||||
Get a single item from a conversation with the given IDs.
|
||||
|
||||
Args:
|
||||
include: Additional fields to include in the response. See the `include` parameter for
|
||||
[listing Conversation items above](https://platform.openai.com/docs/api-reference/conversations/list-items#conversations_list_items-include)
|
||||
for more information.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
if not item_id:
|
||||
raise ValueError(f"Expected a non-empty value for `item_id` but received {item_id!r}")
|
||||
return cast(
|
||||
ConversationItem,
|
||||
self._get(
|
||||
f"/conversations/{conversation_id}/items/{item_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform({"include": include}, item_retrieve_params.ItemRetrieveParams),
|
||||
),
|
||||
cast_to=cast(Any, ConversationItem), # Union types cannot be passed in as arguments in the type system
|
||||
),
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
include: List[ResponseIncludable] | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncConversationCursorPage[ConversationItem]:
|
||||
"""
|
||||
List all items for a conversation with the given ID.
|
||||
|
||||
Args:
|
||||
after: An item ID to list items after, used in pagination.
|
||||
|
||||
include: Specify additional output data to include in the model response. Currently
|
||||
supported values are:
|
||||
|
||||
- `web_search_call.action.sources`: Include the sources of the web search tool
|
||||
call.
|
||||
- `code_interpreter_call.outputs`: Includes the outputs of python code execution
|
||||
in code interpreter tool call items.
|
||||
- `computer_call_output.output.image_url`: Include image urls from the computer
|
||||
call output.
|
||||
- `file_search_call.results`: Include the search results of the file search tool
|
||||
call.
|
||||
- `message.input_image.image_url`: Include image urls from the input message.
|
||||
- `message.output_text.logprobs`: Include logprobs with assistant messages.
|
||||
- `reasoning.encrypted_content`: Includes an encrypted version of reasoning
|
||||
tokens in reasoning item outputs. This enables reasoning items to be used in
|
||||
multi-turn conversations when using the Responses API statelessly (like when
|
||||
the `store` parameter is set to `false`, or when an organization is enrolled
|
||||
in the zero data retention program).
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: The order to return the input items in. Default is `desc`.
|
||||
|
||||
- `asc`: Return the input items in ascending order.
|
||||
- `desc`: Return the input items in descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/conversations/{conversation_id}/items",
|
||||
page=SyncConversationCursorPage[ConversationItem],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"include": include,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
item_list_params.ItemListParams,
|
||||
),
|
||||
),
|
||||
model=cast(Any, ConversationItem), # Union types cannot be passed in as arguments in the type system
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
item_id: str,
|
||||
*,
|
||||
conversation_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Delete an item from a conversation with the given IDs.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
if not item_id:
|
||||
raise ValueError(f"Expected a non-empty value for `item_id` but received {item_id!r}")
|
||||
return self._delete(
|
||||
f"/conversations/{conversation_id}/items/{item_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
|
||||
class AsyncItems(AsyncAPIResource):
|
||||
"""Manage conversations and conversation items."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncItemsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncItemsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncItemsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncItemsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
items: Iterable[ResponseInputItemParam],
|
||||
include: List[ResponseIncludable] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ConversationItemList:
|
||||
"""
|
||||
Create items in a conversation with the given ID.
|
||||
|
||||
Args:
|
||||
items: The items to add to the conversation. You may add up to 20 items at a time.
|
||||
|
||||
include: Additional fields to include in the response. See the `include` parameter for
|
||||
[listing Conversation items above](https://platform.openai.com/docs/api-reference/conversations/list-items#conversations_list_items-include)
|
||||
for more information.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return await self._post(
|
||||
f"/conversations/{conversation_id}/items",
|
||||
body=await async_maybe_transform({"items": items}, item_create_params.ItemCreateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=await async_maybe_transform({"include": include}, item_create_params.ItemCreateParams),
|
||||
),
|
||||
cast_to=ConversationItemList,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
item_id: str,
|
||||
*,
|
||||
conversation_id: str,
|
||||
include: List[ResponseIncludable] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> ConversationItem:
|
||||
"""
|
||||
Get a single item from a conversation with the given IDs.
|
||||
|
||||
Args:
|
||||
include: Additional fields to include in the response. See the `include` parameter for
|
||||
[listing Conversation items above](https://platform.openai.com/docs/api-reference/conversations/list-items#conversations_list_items-include)
|
||||
for more information.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
if not item_id:
|
||||
raise ValueError(f"Expected a non-empty value for `item_id` but received {item_id!r}")
|
||||
return cast(
|
||||
ConversationItem,
|
||||
await self._get(
|
||||
f"/conversations/{conversation_id}/items/{item_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=await async_maybe_transform({"include": include}, item_retrieve_params.ItemRetrieveParams),
|
||||
),
|
||||
cast_to=cast(Any, ConversationItem), # Union types cannot be passed in as arguments in the type system
|
||||
),
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
conversation_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
include: List[ResponseIncludable] | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[ConversationItem, AsyncConversationCursorPage[ConversationItem]]:
|
||||
"""
|
||||
List all items for a conversation with the given ID.
|
||||
|
||||
Args:
|
||||
after: An item ID to list items after, used in pagination.
|
||||
|
||||
include: Specify additional output data to include in the model response. Currently
|
||||
supported values are:
|
||||
|
||||
- `web_search_call.action.sources`: Include the sources of the web search tool
|
||||
call.
|
||||
- `code_interpreter_call.outputs`: Includes the outputs of python code execution
|
||||
in code interpreter tool call items.
|
||||
- `computer_call_output.output.image_url`: Include image urls from the computer
|
||||
call output.
|
||||
- `file_search_call.results`: Include the search results of the file search tool
|
||||
call.
|
||||
- `message.input_image.image_url`: Include image urls from the input message.
|
||||
- `message.output_text.logprobs`: Include logprobs with assistant messages.
|
||||
- `reasoning.encrypted_content`: Includes an encrypted version of reasoning
|
||||
tokens in reasoning item outputs. This enables reasoning items to be used in
|
||||
multi-turn conversations when using the Responses API statelessly (like when
|
||||
the `store` parameter is set to `false`, or when an organization is enrolled
|
||||
in the zero data retention program).
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
100, and the default is 20.
|
||||
|
||||
order: The order to return the input items in. Default is `desc`.
|
||||
|
||||
- `asc`: Return the input items in ascending order.
|
||||
- `desc`: Return the input items in descending order.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/conversations/{conversation_id}/items",
|
||||
page=AsyncConversationCursorPage[ConversationItem],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"include": include,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
},
|
||||
item_list_params.ItemListParams,
|
||||
),
|
||||
),
|
||||
model=cast(Any, ConversationItem), # Union types cannot be passed in as arguments in the type system
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
item_id: str,
|
||||
*,
|
||||
conversation_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> Conversation:
|
||||
"""
|
||||
Delete an item from a conversation with the given IDs.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not conversation_id:
|
||||
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
|
||||
if not item_id:
|
||||
raise ValueError(f"Expected a non-empty value for `item_id` but received {item_id!r}")
|
||||
return await self._delete(
|
||||
f"/conversations/{conversation_id}/items/{item_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=Conversation,
|
||||
)
|
||||
|
||||
|
||||
class ItemsWithRawResponse:
|
||||
def __init__(self, items: Items) -> None:
|
||||
self._items = items
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
items.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
items.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
items.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
items.delete,
|
||||
)
|
||||
|
||||
|
||||
class AsyncItemsWithRawResponse:
|
||||
def __init__(self, items: AsyncItems) -> None:
|
||||
self._items = items
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
items.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
items.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
items.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
items.delete,
|
||||
)
|
||||
|
||||
|
||||
class ItemsWithStreamingResponse:
|
||||
def __init__(self, items: Items) -> None:
|
||||
self._items = items
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
items.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
items.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
items.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
items.delete,
|
||||
)
|
||||
|
||||
|
||||
class AsyncItemsWithStreamingResponse:
|
||||
def __init__(self, items: AsyncItems) -> None:
|
||||
self._items = items
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
items.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
items.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
items.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
items.delete,
|
||||
)
|
||||
|
|
@ -0,0 +1,306 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import array
|
||||
import base64
|
||||
from typing import Union, Iterable, cast
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .. import _legacy_response
|
||||
from ..types import embedding_create_params
|
||||
from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
|
||||
from .._utils import is_given, maybe_transform
|
||||
from .._compat import cached_property
|
||||
from .._extras import numpy as np, has_numpy
|
||||
from .._resource import SyncAPIResource, AsyncAPIResource
|
||||
from .._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from .._base_client import make_request_options
|
||||
from ..types.embedding_model import EmbeddingModel
|
||||
from ..types.create_embedding_response import CreateEmbeddingResponse
|
||||
|
||||
__all__ = ["Embeddings", "AsyncEmbeddings"]
|
||||
|
||||
|
||||
class Embeddings(SyncAPIResource):
|
||||
"""
|
||||
Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.
|
||||
"""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> EmbeddingsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return EmbeddingsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> EmbeddingsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return EmbeddingsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
input: Union[str, SequenceNotStr[str], Iterable[int], Iterable[Iterable[int]]],
|
||||
model: Union[str, EmbeddingModel],
|
||||
dimensions: int | Omit = omit,
|
||||
encoding_format: Literal["float", "base64"] | Omit = omit,
|
||||
user: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> CreateEmbeddingResponse:
|
||||
"""
|
||||
Creates an embedding vector representing the input text.
|
||||
|
||||
Args:
|
||||
input: Input text to embed, encoded as a string or array of tokens. To embed multiple
|
||||
inputs in a single request, pass an array of strings or array of token arrays.
|
||||
The input must not exceed the max input tokens for the model (8192 tokens for
|
||||
all embedding models), cannot be an empty string, and any array must be 2048
|
||||
dimensions or less.
|
||||
[Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)
|
||||
for counting tokens. In addition to the per-input token limit, all embedding
|
||||
models enforce a maximum of 300,000 tokens summed across all inputs in a single
|
||||
request.
|
||||
|
||||
model: ID of the model to use. You can use the
|
||||
[List models](https://platform.openai.com/docs/api-reference/models/list) API to
|
||||
see all of your available models, or see our
|
||||
[Model overview](https://platform.openai.com/docs/models) for descriptions of
|
||||
them.
|
||||
|
||||
dimensions: The number of dimensions the resulting output embeddings should have. Only
|
||||
supported in `text-embedding-3` and later models.
|
||||
|
||||
encoding_format: The format to return the embeddings in. Can be either `float` or
|
||||
[`base64`](https://pypi.org/project/pybase64/).
|
||||
|
||||
user: A unique identifier representing your end-user, which can help OpenAI to monitor
|
||||
and detect abuse.
|
||||
[Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids).
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
params = {
|
||||
"input": input,
|
||||
"model": model,
|
||||
"user": user,
|
||||
"dimensions": dimensions,
|
||||
"encoding_format": encoding_format,
|
||||
}
|
||||
if not is_given(encoding_format):
|
||||
params["encoding_format"] = "base64"
|
||||
|
||||
def parser(obj: CreateEmbeddingResponse) -> CreateEmbeddingResponse:
|
||||
if is_given(encoding_format):
|
||||
# don't modify the response object if a user explicitly asked for a format
|
||||
return obj
|
||||
|
||||
if not obj.data:
|
||||
raise ValueError("No embedding data received")
|
||||
|
||||
for embedding in obj.data:
|
||||
data = cast(object, embedding.embedding)
|
||||
if not isinstance(data, str):
|
||||
continue
|
||||
if not has_numpy():
|
||||
# use array for base64 optimisation
|
||||
embedding.embedding = array.array("f", base64.b64decode(data)).tolist()
|
||||
else:
|
||||
embedding.embedding = np.frombuffer( # type: ignore[no-untyped-call]
|
||||
base64.b64decode(data), dtype="float32"
|
||||
).tolist()
|
||||
|
||||
return obj
|
||||
|
||||
return self._post(
|
||||
"/embeddings",
|
||||
body=maybe_transform(params, embedding_create_params.EmbeddingCreateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
post_parser=parser,
|
||||
),
|
||||
cast_to=CreateEmbeddingResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncEmbeddings(AsyncAPIResource):
|
||||
"""
|
||||
Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.
|
||||
"""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncEmbeddingsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncEmbeddingsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncEmbeddingsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncEmbeddingsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
input: Union[str, SequenceNotStr[str], Iterable[int], Iterable[Iterable[int]]],
|
||||
model: Union[str, EmbeddingModel],
|
||||
dimensions: int | Omit = omit,
|
||||
encoding_format: Literal["float", "base64"] | Omit = omit,
|
||||
user: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> CreateEmbeddingResponse:
|
||||
"""
|
||||
Creates an embedding vector representing the input text.
|
||||
|
||||
Args:
|
||||
input: Input text to embed, encoded as a string or array of tokens. To embed multiple
|
||||
inputs in a single request, pass an array of strings or array of token arrays.
|
||||
The input must not exceed the max input tokens for the model (8192 tokens for
|
||||
all embedding models), cannot be an empty string, and any array must be 2048
|
||||
dimensions or less.
|
||||
[Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)
|
||||
for counting tokens. In addition to the per-input token limit, all embedding
|
||||
models enforce a maximum of 300,000 tokens summed across all inputs in a single
|
||||
request.
|
||||
|
||||
model: ID of the model to use. You can use the
|
||||
[List models](https://platform.openai.com/docs/api-reference/models/list) API to
|
||||
see all of your available models, or see our
|
||||
[Model overview](https://platform.openai.com/docs/models) for descriptions of
|
||||
them.
|
||||
|
||||
dimensions: The number of dimensions the resulting output embeddings should have. Only
|
||||
supported in `text-embedding-3` and later models.
|
||||
|
||||
encoding_format: The format to return the embeddings in. Can be either `float` or
|
||||
[`base64`](https://pypi.org/project/pybase64/).
|
||||
|
||||
user: A unique identifier representing your end-user, which can help OpenAI to monitor
|
||||
and detect abuse.
|
||||
[Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids).
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
params = {
|
||||
"input": input,
|
||||
"model": model,
|
||||
"user": user,
|
||||
"dimensions": dimensions,
|
||||
"encoding_format": encoding_format,
|
||||
}
|
||||
if not is_given(encoding_format):
|
||||
params["encoding_format"] = "base64"
|
||||
|
||||
def parser(obj: CreateEmbeddingResponse) -> CreateEmbeddingResponse:
|
||||
if is_given(encoding_format):
|
||||
# don't modify the response object if a user explicitly asked for a format
|
||||
return obj
|
||||
|
||||
if not obj.data:
|
||||
raise ValueError("No embedding data received")
|
||||
|
||||
for embedding in obj.data:
|
||||
data = cast(object, embedding.embedding)
|
||||
if not isinstance(data, str):
|
||||
continue
|
||||
if not has_numpy():
|
||||
# use array for base64 optimisation
|
||||
embedding.embedding = array.array("f", base64.b64decode(data)).tolist()
|
||||
else:
|
||||
embedding.embedding = np.frombuffer( # type: ignore[no-untyped-call]
|
||||
base64.b64decode(data), dtype="float32"
|
||||
).tolist()
|
||||
|
||||
return obj
|
||||
|
||||
return await self._post(
|
||||
"/embeddings",
|
||||
body=maybe_transform(params, embedding_create_params.EmbeddingCreateParams),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
post_parser=parser,
|
||||
),
|
||||
cast_to=CreateEmbeddingResponse,
|
||||
)
|
||||
|
||||
|
||||
class EmbeddingsWithRawResponse:
|
||||
def __init__(self, embeddings: Embeddings) -> None:
|
||||
self._embeddings = embeddings
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
embeddings.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncEmbeddingsWithRawResponse:
|
||||
def __init__(self, embeddings: AsyncEmbeddings) -> None:
|
||||
self._embeddings = embeddings
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
embeddings.create,
|
||||
)
|
||||
|
||||
|
||||
class EmbeddingsWithStreamingResponse:
|
||||
def __init__(self, embeddings: Embeddings) -> None:
|
||||
self._embeddings = embeddings
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
embeddings.create,
|
||||
)
|
||||
|
||||
|
||||
class AsyncEmbeddingsWithStreamingResponse:
|
||||
def __init__(self, embeddings: AsyncEmbeddings) -> None:
|
||||
self._embeddings = embeddings
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
embeddings.create,
|
||||
)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .runs import (
|
||||
Runs,
|
||||
AsyncRuns,
|
||||
RunsWithRawResponse,
|
||||
AsyncRunsWithRawResponse,
|
||||
RunsWithStreamingResponse,
|
||||
AsyncRunsWithStreamingResponse,
|
||||
)
|
||||
from .evals import (
|
||||
Evals,
|
||||
AsyncEvals,
|
||||
EvalsWithRawResponse,
|
||||
AsyncEvalsWithRawResponse,
|
||||
EvalsWithStreamingResponse,
|
||||
AsyncEvalsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Runs",
|
||||
"AsyncRuns",
|
||||
"RunsWithRawResponse",
|
||||
"AsyncRunsWithRawResponse",
|
||||
"RunsWithStreamingResponse",
|
||||
"AsyncRunsWithStreamingResponse",
|
||||
"Evals",
|
||||
"AsyncEvals",
|
||||
"EvalsWithRawResponse",
|
||||
"AsyncEvalsWithRawResponse",
|
||||
"EvalsWithStreamingResponse",
|
||||
"AsyncEvalsWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,672 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Iterable, Optional
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from ... import _legacy_response
|
||||
from ...types import eval_list_params, eval_create_params, eval_update_params
|
||||
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ..._utils import maybe_transform, async_maybe_transform
|
||||
from ..._compat import cached_property
|
||||
from .runs.runs import (
|
||||
Runs,
|
||||
AsyncRuns,
|
||||
RunsWithRawResponse,
|
||||
AsyncRunsWithRawResponse,
|
||||
RunsWithStreamingResponse,
|
||||
AsyncRunsWithStreamingResponse,
|
||||
)
|
||||
from ..._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ...pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ..._base_client import AsyncPaginator, make_request_options
|
||||
from ...types.eval_list_response import EvalListResponse
|
||||
from ...types.eval_create_response import EvalCreateResponse
|
||||
from ...types.eval_delete_response import EvalDeleteResponse
|
||||
from ...types.eval_update_response import EvalUpdateResponse
|
||||
from ...types.eval_retrieve_response import EvalRetrieveResponse
|
||||
from ...types.shared_params.metadata import Metadata
|
||||
|
||||
__all__ = ["Evals", "AsyncEvals"]
|
||||
|
||||
|
||||
class Evals(SyncAPIResource):
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
|
||||
@cached_property
|
||||
def runs(self) -> Runs:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return Runs(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> EvalsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return EvalsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> EvalsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return EvalsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
data_source_config: eval_create_params.DataSourceConfig,
|
||||
testing_criteria: Iterable[eval_create_params.TestingCriterion],
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalCreateResponse:
|
||||
"""
|
||||
Create the structure of an evaluation that can be used to test a model's
|
||||
performance. An evaluation is a set of testing criteria and the config for a
|
||||
data source, which dictates the schema of the data used in the evaluation. After
|
||||
creating an evaluation, you can run it on different models and model parameters.
|
||||
We support several types of graders and datasources. For more information, see
|
||||
the [Evals guide](https://platform.openai.com/docs/guides/evals).
|
||||
|
||||
Args:
|
||||
data_source_config: The configuration for the data source used for the evaluation runs. Dictates the
|
||||
schema of the data used in the evaluation.
|
||||
|
||||
testing_criteria: A list of graders for all eval runs in this group. Graders can reference
|
||||
variables in the data source using double curly braces notation, like
|
||||
`{{item.variable_name}}`. To reference the model's output, use the `sample`
|
||||
namespace (ie, `{{sample.output_text}}`).
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
name: The name of the evaluation.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._post(
|
||||
"/evals",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"data_source_config": data_source_config,
|
||||
"testing_criteria": testing_criteria,
|
||||
"metadata": metadata,
|
||||
"name": name,
|
||||
},
|
||||
eval_create_params.EvalCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalCreateResponse,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalRetrieveResponse:
|
||||
"""
|
||||
Get an evaluation by ID.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return self._get(
|
||||
f"/evals/{eval_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalRetrieveResponse,
|
||||
)
|
||||
|
||||
def update(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalUpdateResponse:
|
||||
"""
|
||||
Update certain properties of an evaluation.
|
||||
|
||||
Args:
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
name: Rename the evaluation.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return self._post(
|
||||
f"/evals/{eval_id}",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"metadata": metadata,
|
||||
"name": name,
|
||||
},
|
||||
eval_update_params.EvalUpdateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalUpdateResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
order_by: Literal["created_at", "updated_at"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[EvalListResponse]:
|
||||
"""
|
||||
List evaluations for a project.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last eval from the previous pagination request.
|
||||
|
||||
limit: Number of evals to retrieve.
|
||||
|
||||
order: Sort order for evals by timestamp. Use `asc` for ascending order or `desc` for
|
||||
descending order.
|
||||
|
||||
order_by: Evals can be ordered by creation time or last updated time. Use `created_at` for
|
||||
creation time or `updated_at` for last updated time.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/evals",
|
||||
page=SyncCursorPage[EvalListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"order_by": order_by,
|
||||
},
|
||||
eval_list_params.EvalListParams,
|
||||
),
|
||||
),
|
||||
model=EvalListResponse,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalDeleteResponse:
|
||||
"""
|
||||
Delete an evaluation.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return self._delete(
|
||||
f"/evals/{eval_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalDeleteResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncEvals(AsyncAPIResource):
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
|
||||
@cached_property
|
||||
def runs(self) -> AsyncRuns:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return AsyncRuns(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncEvalsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncEvalsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncEvalsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncEvalsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
data_source_config: eval_create_params.DataSourceConfig,
|
||||
testing_criteria: Iterable[eval_create_params.TestingCriterion],
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalCreateResponse:
|
||||
"""
|
||||
Create the structure of an evaluation that can be used to test a model's
|
||||
performance. An evaluation is a set of testing criteria and the config for a
|
||||
data source, which dictates the schema of the data used in the evaluation. After
|
||||
creating an evaluation, you can run it on different models and model parameters.
|
||||
We support several types of graders and datasources. For more information, see
|
||||
the [Evals guide](https://platform.openai.com/docs/guides/evals).
|
||||
|
||||
Args:
|
||||
data_source_config: The configuration for the data source used for the evaluation runs. Dictates the
|
||||
schema of the data used in the evaluation.
|
||||
|
||||
testing_criteria: A list of graders for all eval runs in this group. Graders can reference
|
||||
variables in the data source using double curly braces notation, like
|
||||
`{{item.variable_name}}`. To reference the model's output, use the `sample`
|
||||
namespace (ie, `{{sample.output_text}}`).
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
name: The name of the evaluation.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return await self._post(
|
||||
"/evals",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"data_source_config": data_source_config,
|
||||
"testing_criteria": testing_criteria,
|
||||
"metadata": metadata,
|
||||
"name": name,
|
||||
},
|
||||
eval_create_params.EvalCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalCreateResponse,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalRetrieveResponse:
|
||||
"""
|
||||
Get an evaluation by ID.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return await self._get(
|
||||
f"/evals/{eval_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalRetrieveResponse,
|
||||
)
|
||||
|
||||
async def update(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalUpdateResponse:
|
||||
"""
|
||||
Update certain properties of an evaluation.
|
||||
|
||||
Args:
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
name: Rename the evaluation.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return await self._post(
|
||||
f"/evals/{eval_id}",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"metadata": metadata,
|
||||
"name": name,
|
||||
},
|
||||
eval_update_params.EvalUpdateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalUpdateResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
order_by: Literal["created_at", "updated_at"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[EvalListResponse, AsyncCursorPage[EvalListResponse]]:
|
||||
"""
|
||||
List evaluations for a project.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last eval from the previous pagination request.
|
||||
|
||||
limit: Number of evals to retrieve.
|
||||
|
||||
order: Sort order for evals by timestamp. Use `asc` for ascending order or `desc` for
|
||||
descending order.
|
||||
|
||||
order_by: Evals can be ordered by creation time or last updated time. Use `created_at` for
|
||||
creation time or `updated_at` for last updated time.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/evals",
|
||||
page=AsyncCursorPage[EvalListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"order_by": order_by,
|
||||
},
|
||||
eval_list_params.EvalListParams,
|
||||
),
|
||||
),
|
||||
model=EvalListResponse,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> EvalDeleteResponse:
|
||||
"""
|
||||
Delete an evaluation.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return await self._delete(
|
||||
f"/evals/{eval_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=EvalDeleteResponse,
|
||||
)
|
||||
|
||||
|
||||
class EvalsWithRawResponse:
|
||||
def __init__(self, evals: Evals) -> None:
|
||||
self._evals = evals
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
evals.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
evals.retrieve,
|
||||
)
|
||||
self.update = _legacy_response.to_raw_response_wrapper(
|
||||
evals.update,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
evals.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
evals.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def runs(self) -> RunsWithRawResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return RunsWithRawResponse(self._evals.runs)
|
||||
|
||||
|
||||
class AsyncEvalsWithRawResponse:
|
||||
def __init__(self, evals: AsyncEvals) -> None:
|
||||
self._evals = evals
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
evals.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
evals.retrieve,
|
||||
)
|
||||
self.update = _legacy_response.async_to_raw_response_wrapper(
|
||||
evals.update,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
evals.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
evals.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def runs(self) -> AsyncRunsWithRawResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return AsyncRunsWithRawResponse(self._evals.runs)
|
||||
|
||||
|
||||
class EvalsWithStreamingResponse:
|
||||
def __init__(self, evals: Evals) -> None:
|
||||
self._evals = evals
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
evals.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
evals.retrieve,
|
||||
)
|
||||
self.update = to_streamed_response_wrapper(
|
||||
evals.update,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
evals.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
evals.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def runs(self) -> RunsWithStreamingResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return RunsWithStreamingResponse(self._evals.runs)
|
||||
|
||||
|
||||
class AsyncEvalsWithStreamingResponse:
|
||||
def __init__(self, evals: AsyncEvals) -> None:
|
||||
self._evals = evals
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
evals.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
evals.retrieve,
|
||||
)
|
||||
self.update = async_to_streamed_response_wrapper(
|
||||
evals.update,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
evals.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
evals.delete,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def runs(self) -> AsyncRunsWithStreamingResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return AsyncRunsWithStreamingResponse(self._evals.runs)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .runs import (
|
||||
Runs,
|
||||
AsyncRuns,
|
||||
RunsWithRawResponse,
|
||||
AsyncRunsWithRawResponse,
|
||||
RunsWithStreamingResponse,
|
||||
AsyncRunsWithStreamingResponse,
|
||||
)
|
||||
from .output_items import (
|
||||
OutputItems,
|
||||
AsyncOutputItems,
|
||||
OutputItemsWithRawResponse,
|
||||
AsyncOutputItemsWithRawResponse,
|
||||
OutputItemsWithStreamingResponse,
|
||||
AsyncOutputItemsWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"OutputItems",
|
||||
"AsyncOutputItems",
|
||||
"OutputItemsWithRawResponse",
|
||||
"AsyncOutputItemsWithRawResponse",
|
||||
"OutputItemsWithStreamingResponse",
|
||||
"AsyncOutputItemsWithStreamingResponse",
|
||||
"Runs",
|
||||
"AsyncRuns",
|
||||
"RunsWithRawResponse",
|
||||
"AsyncRunsWithRawResponse",
|
||||
"RunsWithStreamingResponse",
|
||||
"AsyncRunsWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,319 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ...._utils import maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from ....pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ...._base_client import AsyncPaginator, make_request_options
|
||||
from ....types.evals.runs import output_item_list_params
|
||||
from ....types.evals.runs.output_item_list_response import OutputItemListResponse
|
||||
from ....types.evals.runs.output_item_retrieve_response import OutputItemRetrieveResponse
|
||||
|
||||
__all__ = ["OutputItems", "AsyncOutputItems"]
|
||||
|
||||
|
||||
class OutputItems(SyncAPIResource):
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> OutputItemsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return OutputItemsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> OutputItemsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return OutputItemsWithStreamingResponse(self)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
output_item_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
run_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> OutputItemRetrieveResponse:
|
||||
"""
|
||||
Get an evaluation run output item by ID.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
if not output_item_id:
|
||||
raise ValueError(f"Expected a non-empty value for `output_item_id` but received {output_item_id!r}")
|
||||
return self._get(
|
||||
f"/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=OutputItemRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
status: Literal["fail", "pass"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[OutputItemListResponse]:
|
||||
"""
|
||||
Get a list of output items for an evaluation run.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last output item from the previous pagination request.
|
||||
|
||||
limit: Number of output items to retrieve.
|
||||
|
||||
order: Sort order for output items by timestamp. Use `asc` for ascending order or
|
||||
`desc` for descending order. Defaults to `asc`.
|
||||
|
||||
status: Filter output items by status. Use `failed` to filter by failed output items or
|
||||
`pass` to filter by passed output items.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/evals/{eval_id}/runs/{run_id}/output_items",
|
||||
page=SyncCursorPage[OutputItemListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"status": status,
|
||||
},
|
||||
output_item_list_params.OutputItemListParams,
|
||||
),
|
||||
),
|
||||
model=OutputItemListResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncOutputItems(AsyncAPIResource):
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncOutputItemsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncOutputItemsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncOutputItemsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncOutputItemsWithStreamingResponse(self)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
output_item_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
run_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> OutputItemRetrieveResponse:
|
||||
"""
|
||||
Get an evaluation run output item by ID.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
if not output_item_id:
|
||||
raise ValueError(f"Expected a non-empty value for `output_item_id` but received {output_item_id!r}")
|
||||
return await self._get(
|
||||
f"/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=OutputItemRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
status: Literal["fail", "pass"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[OutputItemListResponse, AsyncCursorPage[OutputItemListResponse]]:
|
||||
"""
|
||||
Get a list of output items for an evaluation run.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last output item from the previous pagination request.
|
||||
|
||||
limit: Number of output items to retrieve.
|
||||
|
||||
order: Sort order for output items by timestamp. Use `asc` for ascending order or
|
||||
`desc` for descending order. Defaults to `asc`.
|
||||
|
||||
status: Filter output items by status. Use `failed` to filter by failed output items or
|
||||
`pass` to filter by passed output items.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/evals/{eval_id}/runs/{run_id}/output_items",
|
||||
page=AsyncCursorPage[OutputItemListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"status": status,
|
||||
},
|
||||
output_item_list_params.OutputItemListParams,
|
||||
),
|
||||
),
|
||||
model=OutputItemListResponse,
|
||||
)
|
||||
|
||||
|
||||
class OutputItemsWithRawResponse:
|
||||
def __init__(self, output_items: OutputItems) -> None:
|
||||
self._output_items = output_items
|
||||
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
output_items.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
output_items.list,
|
||||
)
|
||||
|
||||
|
||||
class AsyncOutputItemsWithRawResponse:
|
||||
def __init__(self, output_items: AsyncOutputItems) -> None:
|
||||
self._output_items = output_items
|
||||
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
output_items.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
output_items.list,
|
||||
)
|
||||
|
||||
|
||||
class OutputItemsWithStreamingResponse:
|
||||
def __init__(self, output_items: OutputItems) -> None:
|
||||
self._output_items = output_items
|
||||
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
output_items.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
output_items.list,
|
||||
)
|
||||
|
||||
|
||||
class AsyncOutputItemsWithStreamingResponse:
|
||||
def __init__(self, output_items: AsyncOutputItems) -> None:
|
||||
self._output_items = output_items
|
||||
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
output_items.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
output_items.list,
|
||||
)
|
||||
|
|
@ -0,0 +1,644 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .... import _legacy_response
|
||||
from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
||||
from ...._utils import maybe_transform, async_maybe_transform
|
||||
from ...._compat import cached_property
|
||||
from ...._resource import SyncAPIResource, AsyncAPIResource
|
||||
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
|
||||
from .output_items import (
|
||||
OutputItems,
|
||||
AsyncOutputItems,
|
||||
OutputItemsWithRawResponse,
|
||||
AsyncOutputItemsWithRawResponse,
|
||||
OutputItemsWithStreamingResponse,
|
||||
AsyncOutputItemsWithStreamingResponse,
|
||||
)
|
||||
from ....pagination import SyncCursorPage, AsyncCursorPage
|
||||
from ....types.evals import run_list_params, run_create_params
|
||||
from ...._base_client import AsyncPaginator, make_request_options
|
||||
from ....types.shared_params.metadata import Metadata
|
||||
from ....types.evals.run_list_response import RunListResponse
|
||||
from ....types.evals.run_cancel_response import RunCancelResponse
|
||||
from ....types.evals.run_create_response import RunCreateResponse
|
||||
from ....types.evals.run_delete_response import RunDeleteResponse
|
||||
from ....types.evals.run_retrieve_response import RunRetrieveResponse
|
||||
|
||||
__all__ = ["Runs", "AsyncRuns"]
|
||||
|
||||
|
||||
class Runs(SyncAPIResource):
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
|
||||
@cached_property
|
||||
def output_items(self) -> OutputItems:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return OutputItems(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> RunsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return RunsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> RunsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return RunsWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
data_source: run_create_params.DataSource,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunCreateResponse:
|
||||
"""
|
||||
Kicks off a new run for a given evaluation, specifying the data source, and what
|
||||
model configuration to use to test. The datasource will be validated against the
|
||||
schema specified in the config of the evaluation.
|
||||
|
||||
Args:
|
||||
data_source: Details about the run's data source.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
name: The name of the run.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return self._post(
|
||||
f"/evals/{eval_id}/runs",
|
||||
body=maybe_transform(
|
||||
{
|
||||
"data_source": data_source,
|
||||
"metadata": metadata,
|
||||
"name": name,
|
||||
},
|
||||
run_create_params.RunCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunCreateResponse,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunRetrieveResponse:
|
||||
"""
|
||||
Get an evaluation run by ID.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return self._get(
|
||||
f"/evals/{eval_id}/runs/{run_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
status: Literal["queued", "in_progress", "completed", "canceled", "failed"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[RunListResponse]:
|
||||
"""
|
||||
Get a list of runs for an evaluation.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last run from the previous pagination request.
|
||||
|
||||
limit: Number of runs to retrieve.
|
||||
|
||||
order: Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for
|
||||
descending order. Defaults to `asc`.
|
||||
|
||||
status: Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed`
|
||||
| `canceled`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/evals/{eval_id}/runs",
|
||||
page=SyncCursorPage[RunListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"status": status,
|
||||
},
|
||||
run_list_params.RunListParams,
|
||||
),
|
||||
),
|
||||
model=RunListResponse,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunDeleteResponse:
|
||||
"""
|
||||
Delete an eval run.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return self._delete(
|
||||
f"/evals/{eval_id}/runs/{run_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunDeleteResponse,
|
||||
)
|
||||
|
||||
def cancel(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunCancelResponse:
|
||||
"""
|
||||
Cancel an ongoing evaluation run.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return self._post(
|
||||
f"/evals/{eval_id}/runs/{run_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunCancelResponse,
|
||||
)
|
||||
|
||||
|
||||
class AsyncRuns(AsyncAPIResource):
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
|
||||
@cached_property
|
||||
def output_items(self) -> AsyncOutputItems:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return AsyncOutputItems(self._client)
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncRunsWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncRunsWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncRunsWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncRunsWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
data_source: run_create_params.DataSource,
|
||||
metadata: Optional[Metadata] | Omit = omit,
|
||||
name: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunCreateResponse:
|
||||
"""
|
||||
Kicks off a new run for a given evaluation, specifying the data source, and what
|
||||
model configuration to use to test. The datasource will be validated against the
|
||||
schema specified in the config of the evaluation.
|
||||
|
||||
Args:
|
||||
data_source: Details about the run's data source.
|
||||
|
||||
metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
|
||||
for storing additional information about the object in a structured format, and
|
||||
querying for objects via API or the dashboard.
|
||||
|
||||
Keys are strings with a maximum length of 64 characters. Values are strings with
|
||||
a maximum length of 512 characters.
|
||||
|
||||
name: The name of the run.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return await self._post(
|
||||
f"/evals/{eval_id}/runs",
|
||||
body=await async_maybe_transform(
|
||||
{
|
||||
"data_source": data_source,
|
||||
"metadata": metadata,
|
||||
"name": name,
|
||||
},
|
||||
run_create_params.RunCreateParams,
|
||||
),
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunCreateResponse,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunRetrieveResponse:
|
||||
"""
|
||||
Get an evaluation run by ID.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return await self._get(
|
||||
f"/evals/{eval_id}/runs/{run_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunRetrieveResponse,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
eval_id: str,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
status: Literal["queued", "in_progress", "completed", "canceled", "failed"] | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[RunListResponse, AsyncCursorPage[RunListResponse]]:
|
||||
"""
|
||||
Get a list of runs for an evaluation.
|
||||
|
||||
Args:
|
||||
after: Identifier for the last run from the previous pagination request.
|
||||
|
||||
limit: Number of runs to retrieve.
|
||||
|
||||
order: Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for
|
||||
descending order. Defaults to `asc`.
|
||||
|
||||
status: Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed`
|
||||
| `canceled`.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
return self._get_api_list(
|
||||
f"/evals/{eval_id}/runs",
|
||||
page=AsyncCursorPage[RunListResponse],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"status": status,
|
||||
},
|
||||
run_list_params.RunListParams,
|
||||
),
|
||||
),
|
||||
model=RunListResponse,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunDeleteResponse:
|
||||
"""
|
||||
Delete an eval run.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return await self._delete(
|
||||
f"/evals/{eval_id}/runs/{run_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunDeleteResponse,
|
||||
)
|
||||
|
||||
async def cancel(
|
||||
self,
|
||||
run_id: str,
|
||||
*,
|
||||
eval_id: str,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> RunCancelResponse:
|
||||
"""
|
||||
Cancel an ongoing evaluation run.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not eval_id:
|
||||
raise ValueError(f"Expected a non-empty value for `eval_id` but received {eval_id!r}")
|
||||
if not run_id:
|
||||
raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
|
||||
return await self._post(
|
||||
f"/evals/{eval_id}/runs/{run_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=RunCancelResponse,
|
||||
)
|
||||
|
||||
|
||||
class RunsWithRawResponse:
|
||||
def __init__(self, runs: Runs) -> None:
|
||||
self._runs = runs
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
runs.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
runs.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
runs.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
runs.delete,
|
||||
)
|
||||
self.cancel = _legacy_response.to_raw_response_wrapper(
|
||||
runs.cancel,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def output_items(self) -> OutputItemsWithRawResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return OutputItemsWithRawResponse(self._runs.output_items)
|
||||
|
||||
|
||||
class AsyncRunsWithRawResponse:
|
||||
def __init__(self, runs: AsyncRuns) -> None:
|
||||
self._runs = runs
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
runs.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
runs.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
runs.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
runs.delete,
|
||||
)
|
||||
self.cancel = _legacy_response.async_to_raw_response_wrapper(
|
||||
runs.cancel,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def output_items(self) -> AsyncOutputItemsWithRawResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return AsyncOutputItemsWithRawResponse(self._runs.output_items)
|
||||
|
||||
|
||||
class RunsWithStreamingResponse:
|
||||
def __init__(self, runs: Runs) -> None:
|
||||
self._runs = runs
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
runs.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
runs.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
runs.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
runs.delete,
|
||||
)
|
||||
self.cancel = to_streamed_response_wrapper(
|
||||
runs.cancel,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def output_items(self) -> OutputItemsWithStreamingResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return OutputItemsWithStreamingResponse(self._runs.output_items)
|
||||
|
||||
|
||||
class AsyncRunsWithStreamingResponse:
|
||||
def __init__(self, runs: AsyncRuns) -> None:
|
||||
self._runs = runs
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
runs.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
runs.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
runs.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
runs.delete,
|
||||
)
|
||||
self.cancel = async_to_streamed_response_wrapper(
|
||||
runs.cancel,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def output_items(self) -> AsyncOutputItemsWithStreamingResponse:
|
||||
"""Manage and run evals in the OpenAI platform."""
|
||||
return AsyncOutputItemsWithStreamingResponse(self._runs.output_items)
|
||||
788
.venv/lib/python3.10/site-packages/openai/resources/files.py
Normal file
788
.venv/lib/python3.10/site-packages/openai/resources/files.py
Normal file
|
|
@ -0,0 +1,788 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import time
|
||||
import typing_extensions
|
||||
from typing import Mapping, cast
|
||||
from typing_extensions import Literal
|
||||
|
||||
import httpx
|
||||
|
||||
from .. import _legacy_response
|
||||
from ..types import FilePurpose, file_list_params, file_create_params
|
||||
from .._types import Body, Omit, Query, Headers, NotGiven, FileTypes, omit, not_given
|
||||
from .._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
|
||||
from .._compat import cached_property
|
||||
from .._resource import SyncAPIResource, AsyncAPIResource
|
||||
from .._response import (
|
||||
StreamedBinaryAPIResponse,
|
||||
AsyncStreamedBinaryAPIResponse,
|
||||
to_streamed_response_wrapper,
|
||||
async_to_streamed_response_wrapper,
|
||||
to_custom_streamed_response_wrapper,
|
||||
async_to_custom_streamed_response_wrapper,
|
||||
)
|
||||
from ..pagination import SyncCursorPage, AsyncCursorPage
|
||||
from .._base_client import AsyncPaginator, make_request_options
|
||||
from ..types.file_object import FileObject
|
||||
from ..types.file_deleted import FileDeleted
|
||||
from ..types.file_purpose import FilePurpose
|
||||
|
||||
__all__ = ["Files", "AsyncFiles"]
|
||||
|
||||
|
||||
class Files(SyncAPIResource):
|
||||
"""
|
||||
Files are used to upload documents that can be used with features like Assistants and Fine-tuning.
|
||||
"""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> FilesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return FilesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> FilesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return FilesWithStreamingResponse(self)
|
||||
|
||||
def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
purpose: FilePurpose,
|
||||
expires_after: file_create_params.ExpiresAfter | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileObject:
|
||||
"""Upload a file that can be used across various endpoints.
|
||||
|
||||
Individual files can be
|
||||
up to 512 MB, and each project can store up to 2.5 TB of files in total. There
|
||||
is no organization-wide storage limit.
|
||||
|
||||
- The Assistants API supports files up to 2 million tokens and of specific file
|
||||
types. See the
|
||||
[Assistants Tools guide](https://platform.openai.com/docs/assistants/tools)
|
||||
for details.
|
||||
- The Fine-tuning API only supports `.jsonl` files. The input also has certain
|
||||
required formats for fine-tuning
|
||||
[chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input)
|
||||
or
|
||||
[completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)
|
||||
models.
|
||||
- The Batch API only supports `.jsonl` files up to 200 MB in size. The input
|
||||
also has a specific required
|
||||
[format](https://platform.openai.com/docs/api-reference/batch/request-input).
|
||||
|
||||
Please [contact us](https://help.openai.com/) if you need to increase these
|
||||
storage limits.
|
||||
|
||||
Args:
|
||||
file: The File object (not file name) to be uploaded.
|
||||
|
||||
purpose:
|
||||
The intended purpose of the uploaded file. One of:
|
||||
|
||||
- `assistants`: Used in the Assistants API
|
||||
- `batch`: Used in the Batch API
|
||||
- `fine-tune`: Used for fine-tuning
|
||||
- `vision`: Images used for vision fine-tuning
|
||||
- `user_data`: Flexible file type for any purpose
|
||||
- `evals`: Used for eval data sets
|
||||
|
||||
expires_after: The expiration policy for a file. By default, files with `purpose=batch` expire
|
||||
after 30 days and all other files are persisted until they are manually deleted.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
body = deepcopy_minimal(
|
||||
{
|
||||
"file": file,
|
||||
"purpose": purpose,
|
||||
"expires_after": expires_after,
|
||||
}
|
||||
)
|
||||
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
||||
# It should be noted that the actual Content-Type header that will be
|
||||
# sent to the server will contain a `boundary` parameter, e.g.
|
||||
# multipart/form-data; boundary=---abc--
|
||||
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
||||
return self._post(
|
||||
"/files",
|
||||
body=maybe_transform(body, file_create_params.FileCreateParams),
|
||||
files=files,
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileObject,
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileObject:
|
||||
"""
|
||||
Returns information about a specific file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return self._get(
|
||||
f"/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileObject,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
purpose: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> SyncCursorPage[FileObject]:
|
||||
"""Returns a list of files.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
10,000, and the default is 10,000.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
purpose: Only return files with the given purpose.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/files",
|
||||
page=SyncCursorPage[FileObject],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"purpose": purpose,
|
||||
},
|
||||
file_list_params.FileListParams,
|
||||
),
|
||||
),
|
||||
model=FileObject,
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileDeleted:
|
||||
"""
|
||||
Delete a file and remove it from all vector stores.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return self._delete(
|
||||
f"/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileDeleted,
|
||||
)
|
||||
|
||||
def content(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> _legacy_response.HttpxBinaryResponseContent:
|
||||
"""
|
||||
Returns the contents of the specified file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
extra_headers = {"Accept": "application/binary", **(extra_headers or {})}
|
||||
return self._get(
|
||||
f"/files/{file_id}/content",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_legacy_response.HttpxBinaryResponseContent,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The `.content()` method should be used instead")
|
||||
def retrieve_content(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> str:
|
||||
"""
|
||||
Returns the contents of the specified file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return self._get(
|
||||
f"/files/{file_id}/content",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=str,
|
||||
)
|
||||
|
||||
def wait_for_processing(
|
||||
self,
|
||||
id: str,
|
||||
*,
|
||||
poll_interval: float = 5.0,
|
||||
max_wait_seconds: float = 30 * 60,
|
||||
) -> FileObject:
|
||||
"""Waits for the given file to be processed, default timeout is 30 mins."""
|
||||
TERMINAL_STATES = {"processed", "error", "deleted"}
|
||||
|
||||
start = time.time()
|
||||
file = self.retrieve(id)
|
||||
while file.status not in TERMINAL_STATES:
|
||||
self._sleep(poll_interval)
|
||||
|
||||
file = self.retrieve(id)
|
||||
if time.time() - start > max_wait_seconds:
|
||||
raise RuntimeError(
|
||||
f"Giving up on waiting for file {id} to finish processing after {max_wait_seconds} seconds."
|
||||
)
|
||||
|
||||
return file
|
||||
|
||||
|
||||
class AsyncFiles(AsyncAPIResource):
|
||||
"""
|
||||
Files are used to upload documents that can be used with features like Assistants and Fine-tuning.
|
||||
"""
|
||||
|
||||
@cached_property
|
||||
def with_raw_response(self) -> AsyncFilesWithRawResponse:
|
||||
"""
|
||||
This property can be used as a prefix for any HTTP method call to return
|
||||
the raw response object instead of the parsed content.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
|
||||
"""
|
||||
return AsyncFilesWithRawResponse(self)
|
||||
|
||||
@cached_property
|
||||
def with_streaming_response(self) -> AsyncFilesWithStreamingResponse:
|
||||
"""
|
||||
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
||||
|
||||
For more information, see https://www.github.com/openai/openai-python#with_streaming_response
|
||||
"""
|
||||
return AsyncFilesWithStreamingResponse(self)
|
||||
|
||||
async def create(
|
||||
self,
|
||||
*,
|
||||
file: FileTypes,
|
||||
purpose: FilePurpose,
|
||||
expires_after: file_create_params.ExpiresAfter | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileObject:
|
||||
"""Upload a file that can be used across various endpoints.
|
||||
|
||||
Individual files can be
|
||||
up to 512 MB, and each project can store up to 2.5 TB of files in total. There
|
||||
is no organization-wide storage limit.
|
||||
|
||||
- The Assistants API supports files up to 2 million tokens and of specific file
|
||||
types. See the
|
||||
[Assistants Tools guide](https://platform.openai.com/docs/assistants/tools)
|
||||
for details.
|
||||
- The Fine-tuning API only supports `.jsonl` files. The input also has certain
|
||||
required formats for fine-tuning
|
||||
[chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input)
|
||||
or
|
||||
[completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)
|
||||
models.
|
||||
- The Batch API only supports `.jsonl` files up to 200 MB in size. The input
|
||||
also has a specific required
|
||||
[format](https://platform.openai.com/docs/api-reference/batch/request-input).
|
||||
|
||||
Please [contact us](https://help.openai.com/) if you need to increase these
|
||||
storage limits.
|
||||
|
||||
Args:
|
||||
file: The File object (not file name) to be uploaded.
|
||||
|
||||
purpose:
|
||||
The intended purpose of the uploaded file. One of:
|
||||
|
||||
- `assistants`: Used in the Assistants API
|
||||
- `batch`: Used in the Batch API
|
||||
- `fine-tune`: Used for fine-tuning
|
||||
- `vision`: Images used for vision fine-tuning
|
||||
- `user_data`: Flexible file type for any purpose
|
||||
- `evals`: Used for eval data sets
|
||||
|
||||
expires_after: The expiration policy for a file. By default, files with `purpose=batch` expire
|
||||
after 30 days and all other files are persisted until they are manually deleted.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
body = deepcopy_minimal(
|
||||
{
|
||||
"file": file,
|
||||
"purpose": purpose,
|
||||
"expires_after": expires_after,
|
||||
}
|
||||
)
|
||||
files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
|
||||
# It should be noted that the actual Content-Type header that will be
|
||||
# sent to the server will contain a `boundary` parameter, e.g.
|
||||
# multipart/form-data; boundary=---abc--
|
||||
extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
|
||||
return await self._post(
|
||||
"/files",
|
||||
body=await async_maybe_transform(body, file_create_params.FileCreateParams),
|
||||
files=files,
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileObject,
|
||||
)
|
||||
|
||||
async def retrieve(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileObject:
|
||||
"""
|
||||
Returns information about a specific file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return await self._get(
|
||||
f"/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileObject,
|
||||
)
|
||||
|
||||
def list(
|
||||
self,
|
||||
*,
|
||||
after: str | Omit = omit,
|
||||
limit: int | Omit = omit,
|
||||
order: Literal["asc", "desc"] | Omit = omit,
|
||||
purpose: str | Omit = omit,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> AsyncPaginator[FileObject, AsyncCursorPage[FileObject]]:
|
||||
"""Returns a list of files.
|
||||
|
||||
Args:
|
||||
after: A cursor for use in pagination.
|
||||
|
||||
`after` is an object ID that defines your place
|
||||
in the list. For instance, if you make a list request and receive 100 objects,
|
||||
ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
||||
fetch the next page of the list.
|
||||
|
||||
limit: A limit on the number of objects to be returned. Limit can range between 1 and
|
||||
10,000, and the default is 10,000.
|
||||
|
||||
order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
||||
order and `desc` for descending order.
|
||||
|
||||
purpose: Only return files with the given purpose.
|
||||
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
return self._get_api_list(
|
||||
"/files",
|
||||
page=AsyncCursorPage[FileObject],
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers,
|
||||
extra_query=extra_query,
|
||||
extra_body=extra_body,
|
||||
timeout=timeout,
|
||||
query=maybe_transform(
|
||||
{
|
||||
"after": after,
|
||||
"limit": limit,
|
||||
"order": order,
|
||||
"purpose": purpose,
|
||||
},
|
||||
file_list_params.FileListParams,
|
||||
),
|
||||
),
|
||||
model=FileObject,
|
||||
)
|
||||
|
||||
async def delete(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> FileDeleted:
|
||||
"""
|
||||
Delete a file and remove it from all vector stores.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return await self._delete(
|
||||
f"/files/{file_id}",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=FileDeleted,
|
||||
)
|
||||
|
||||
async def content(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> _legacy_response.HttpxBinaryResponseContent:
|
||||
"""
|
||||
Returns the contents of the specified file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
extra_headers = {"Accept": "application/binary", **(extra_headers or {})}
|
||||
return await self._get(
|
||||
f"/files/{file_id}/content",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=_legacy_response.HttpxBinaryResponseContent,
|
||||
)
|
||||
|
||||
@typing_extensions.deprecated("The `.content()` method should be used instead")
|
||||
async def retrieve_content(
|
||||
self,
|
||||
file_id: str,
|
||||
*,
|
||||
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
||||
# The extra values given here take precedence over values defined on the client or passed to this method.
|
||||
extra_headers: Headers | None = None,
|
||||
extra_query: Query | None = None,
|
||||
extra_body: Body | None = None,
|
||||
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
||||
) -> str:
|
||||
"""
|
||||
Returns the contents of the specified file.
|
||||
|
||||
Args:
|
||||
extra_headers: Send extra headers
|
||||
|
||||
extra_query: Add additional query parameters to the request
|
||||
|
||||
extra_body: Add additional JSON properties to the request
|
||||
|
||||
timeout: Override the client-level default timeout for this request, in seconds
|
||||
"""
|
||||
if not file_id:
|
||||
raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}")
|
||||
return await self._get(
|
||||
f"/files/{file_id}/content",
|
||||
options=make_request_options(
|
||||
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
||||
),
|
||||
cast_to=str,
|
||||
)
|
||||
|
||||
async def wait_for_processing(
|
||||
self,
|
||||
id: str,
|
||||
*,
|
||||
poll_interval: float = 5.0,
|
||||
max_wait_seconds: float = 30 * 60,
|
||||
) -> FileObject:
|
||||
"""Waits for the given file to be processed, default timeout is 30 mins."""
|
||||
TERMINAL_STATES = {"processed", "error", "deleted"}
|
||||
|
||||
start = time.time()
|
||||
file = await self.retrieve(id)
|
||||
while file.status not in TERMINAL_STATES:
|
||||
await self._sleep(poll_interval)
|
||||
|
||||
file = await self.retrieve(id)
|
||||
if time.time() - start > max_wait_seconds:
|
||||
raise RuntimeError(
|
||||
f"Giving up on waiting for file {id} to finish processing after {max_wait_seconds} seconds."
|
||||
)
|
||||
|
||||
return file
|
||||
|
||||
|
||||
class FilesWithRawResponse:
|
||||
def __init__(self, files: Files) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = _legacy_response.to_raw_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.to_raw_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.to_raw_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = _legacy_response.to_raw_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
self.content = _legacy_response.to_raw_response_wrapper(
|
||||
files.content,
|
||||
)
|
||||
self.retrieve_content = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.to_raw_response_wrapper(
|
||||
files.retrieve_content, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AsyncFilesWithRawResponse:
|
||||
def __init__(self, files: AsyncFiles) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
self.content = _legacy_response.async_to_raw_response_wrapper(
|
||||
files.content,
|
||||
)
|
||||
self.retrieve_content = ( # pyright: ignore[reportDeprecated]
|
||||
_legacy_response.async_to_raw_response_wrapper(
|
||||
files.retrieve_content, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class FilesWithStreamingResponse:
|
||||
def __init__(self, files: Files) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = to_streamed_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = to_streamed_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = to_streamed_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = to_streamed_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
self.content = to_custom_streamed_response_wrapper(
|
||||
files.content,
|
||||
StreamedBinaryAPIResponse,
|
||||
)
|
||||
self.retrieve_content = ( # pyright: ignore[reportDeprecated]
|
||||
to_streamed_response_wrapper(
|
||||
files.retrieve_content, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class AsyncFilesWithStreamingResponse:
|
||||
def __init__(self, files: AsyncFiles) -> None:
|
||||
self._files = files
|
||||
|
||||
self.create = async_to_streamed_response_wrapper(
|
||||
files.create,
|
||||
)
|
||||
self.retrieve = async_to_streamed_response_wrapper(
|
||||
files.retrieve,
|
||||
)
|
||||
self.list = async_to_streamed_response_wrapper(
|
||||
files.list,
|
||||
)
|
||||
self.delete = async_to_streamed_response_wrapper(
|
||||
files.delete,
|
||||
)
|
||||
self.content = async_to_custom_streamed_response_wrapper(
|
||||
files.content,
|
||||
AsyncStreamedBinaryAPIResponse,
|
||||
)
|
||||
self.retrieve_content = ( # pyright: ignore[reportDeprecated]
|
||||
async_to_streamed_response_wrapper(
|
||||
files.retrieve_content, # pyright: ignore[reportDeprecated],
|
||||
)
|
||||
)
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .jobs import (
|
||||
Jobs,
|
||||
AsyncJobs,
|
||||
JobsWithRawResponse,
|
||||
AsyncJobsWithRawResponse,
|
||||
JobsWithStreamingResponse,
|
||||
AsyncJobsWithStreamingResponse,
|
||||
)
|
||||
from .alpha import (
|
||||
Alpha,
|
||||
AsyncAlpha,
|
||||
AlphaWithRawResponse,
|
||||
AsyncAlphaWithRawResponse,
|
||||
AlphaWithStreamingResponse,
|
||||
AsyncAlphaWithStreamingResponse,
|
||||
)
|
||||
from .checkpoints import (
|
||||
Checkpoints,
|
||||
AsyncCheckpoints,
|
||||
CheckpointsWithRawResponse,
|
||||
AsyncCheckpointsWithRawResponse,
|
||||
CheckpointsWithStreamingResponse,
|
||||
AsyncCheckpointsWithStreamingResponse,
|
||||
)
|
||||
from .fine_tuning import (
|
||||
FineTuning,
|
||||
AsyncFineTuning,
|
||||
FineTuningWithRawResponse,
|
||||
AsyncFineTuningWithRawResponse,
|
||||
FineTuningWithStreamingResponse,
|
||||
AsyncFineTuningWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Jobs",
|
||||
"AsyncJobs",
|
||||
"JobsWithRawResponse",
|
||||
"AsyncJobsWithRawResponse",
|
||||
"JobsWithStreamingResponse",
|
||||
"AsyncJobsWithStreamingResponse",
|
||||
"Checkpoints",
|
||||
"AsyncCheckpoints",
|
||||
"CheckpointsWithRawResponse",
|
||||
"AsyncCheckpointsWithRawResponse",
|
||||
"CheckpointsWithStreamingResponse",
|
||||
"AsyncCheckpointsWithStreamingResponse",
|
||||
"Alpha",
|
||||
"AsyncAlpha",
|
||||
"AlphaWithRawResponse",
|
||||
"AsyncAlphaWithRawResponse",
|
||||
"AlphaWithStreamingResponse",
|
||||
"AsyncAlphaWithStreamingResponse",
|
||||
"FineTuning",
|
||||
"AsyncFineTuning",
|
||||
"FineTuningWithRawResponse",
|
||||
"AsyncFineTuningWithRawResponse",
|
||||
"FineTuningWithStreamingResponse",
|
||||
"AsyncFineTuningWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,33 @@
|
|||
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
||||
|
||||
from .alpha import (
|
||||
Alpha,
|
||||
AsyncAlpha,
|
||||
AlphaWithRawResponse,
|
||||
AsyncAlphaWithRawResponse,
|
||||
AlphaWithStreamingResponse,
|
||||
AsyncAlphaWithStreamingResponse,
|
||||
)
|
||||
from .graders import (
|
||||
Graders,
|
||||
AsyncGraders,
|
||||
GradersWithRawResponse,
|
||||
AsyncGradersWithRawResponse,
|
||||
GradersWithStreamingResponse,
|
||||
AsyncGradersWithStreamingResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Graders",
|
||||
"AsyncGraders",
|
||||
"GradersWithRawResponse",
|
||||
"AsyncGradersWithRawResponse",
|
||||
"GradersWithStreamingResponse",
|
||||
"AsyncGradersWithStreamingResponse",
|
||||
"Alpha",
|
||||
"AsyncAlpha",
|
||||
"AlphaWithRawResponse",
|
||||
"AsyncAlphaWithRawResponse",
|
||||
"AlphaWithStreamingResponse",
|
||||
"AsyncAlphaWithStreamingResponse",
|
||||
]
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue