Skip to main content

openai_core/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![doc = include_str!("../docs/crate-docs.md")]
3#![forbid(unsafe_code)]
4#![warn(rust_2024_compatibility, missing_debug_implementations)]
5
6//! `openai-core` 提供了一个围绕 OpenAI 兼容接口构建的异步 Rust SDK。
7//! 它支持多 Provider、分页、SSE 流、Multipart 上传、Webhook 校验以及工具调用辅助能力。
8
9pub mod audio_helpers;
10pub mod auth;
11pub mod client;
12pub mod config;
13pub mod error;
14pub mod files;
15mod generated;
16#[cfg(feature = "structured-output")]
17#[cfg_attr(docsrs, doc(cfg(feature = "structured-output")))]
18pub mod helpers;
19mod json_payload;
20pub mod pagination;
21pub mod providers;
22pub mod resources;
23mod response_meta;
24pub mod stream;
25mod transport;
26pub mod webhooks;
27#[cfg(any(feature = "realtime", feature = "responses-ws"))]
28#[cfg_attr(docsrs, doc(cfg(any(feature = "realtime", feature = "responses-ws"))))]
29pub mod websocket;
30
31pub use audio_helpers::{AudioPlaybackInput, RecordAudioOptions, play_audio, record_audio};
32pub use auth::ApiKeySource;
33pub use client::{Client, ClientBuilder};
34pub use config::{ClientOptions, LogLevel, LogRecord, Logger, LoggerHandle, RequestOptions};
35pub use error::{
36    ApiError, ApiErrorKind, ConnectionError, ContentFilterFinishReasonError, Error,
37    LengthFinishReasonError, ProviderCompatibilityError, Result, SerializationError, StreamError,
38    WebSocketError, WebSocketErrorKind, WebhookVerificationError,
39};
40pub use files::{FileLike, MultipartField, ToFileInput, UploadSource, to_file};
41#[cfg(feature = "structured-output")]
42#[cfg_attr(docsrs, doc(cfg(feature = "structured-output")))]
43pub use helpers::{ParsedChatCompletion, ParsedResponse, json_schema_for, parse_json_payload};
44#[cfg(feature = "tool-runner")]
45#[cfg_attr(docsrs, doc(cfg(feature = "tool-runner")))]
46pub use helpers::{ToolDefinition, ToolHandler, ToolRegistry};
47pub use json_payload::JsonPayload;
48pub use pagination::{CursorPage, ListEnvelope, Page, PageStream};
49pub use providers::{
50    AuthScheme, AzureAuthMode, AzureOptions, CapabilitySet, CompatibilityMode, Provider,
51    ProviderKind, ProviderProfile,
52};
53pub use resources::{
54    AudioSpeechCreateParams, AudioTranscription, AudioTranscriptionSegment,
55    AudioTranscriptionSegmentId, AudioTranscriptionWord, AudioTranslation, Batch,
56    BatchCreateParams, BatchError, BatchErrors, BatchRequestCounts, BatchUsage,
57    BatchUsageInputTokensDetails, BatchUsageOutputTokensDetails, BetaAssistant, BetaAssistantTool,
58    BetaRealtimeSession, BetaRealtimeTranscriptionSession, BetaThread, BetaThreadMessage,
59    BetaThreadMessageContent, BetaThreadRun, BetaThreadRunIncompleteDetails,
60    BetaThreadRunLastError, BetaThreadRunRequiredAction, BetaThreadRunRequiredActionFunction,
61    BetaThreadRunRequiredActionFunctionToolCall, BetaThreadRunRequiredActionSubmitToolOutputs,
62    BetaThreadRunStep, BetaThreadRunStepDetails, BetaThreadRunTool, BetaThreadRunUsage,
63    BetaThreadToolResources, ChatCompletion, ChatCompletionChoiceLogprobs, ChatCompletionChunk,
64    ChatCompletionMessage, ChatCompletionStoreContentPart, ChatCompletionStoreMessage,
65    ChatCompletionTokenLogprob, ChatCompletionTokenTopLogprob, ChatCompletionToolCall,
66    ChatContentDeltaEvent, ChatKitConfiguration, ChatKitRateLimits, ChatKitSession, ChatKitThread,
67    ChatKitThreadContent, ChatKitThreadItem, ChatKitThreadStatus, ChatKitWorkflow,
68    ChatLogProbsDeltaEvent, ChatReasoningDetail, ChatRefusalDeltaEvent,
69    ChatToolArgumentsDeltaEvent, ChatToolChoice, ChatToolChoiceMode, Completion, CompletionChoice,
70    CompletionLogProbs, CompletionUsage, CompletionUsageCompletionTokensDetails,
71    CompletionUsagePromptTokensDetails, Container, ContainerCreateParams, ContainerExpiresAfter,
72    ContainerFile, ContainerFileCreateParams, Conversation, ConversationContentPart,
73    ConversationCreateParams, ConversationInputItem, ConversationItem,
74    ConversationItemCreateParams, ConversationUpdateParams, DeleteResponse, EmbeddingData,
75    EmbeddingResponse, EmbeddingUsage, Eval, EvalCreateParams, EvalDataSourceConfig, EvalOutput,
76    EvalOutputItem, EvalRun, EvalRunCreateParams, EvalRunInput, EvalTestingCriterion,
77    EvalUpdateParams, FileObject, FineTuningCheckpoint, FineTuningCheckpointPermission,
78    FineTuningHyperparameterValue, FineTuningJob, FineTuningJobCreateParams, FineTuningJobError,
79    FineTuningJobEvent, FineTuningJobHyperparameters, FineTuningJobIntegration, FineTuningMetrics,
80    FineTuningWandbIntegration, GraderModel, GraderModelCatalog, GraderRunErrors,
81    GraderRunMetadata, GraderRunResponse, GraderValidateResponse, ImageData, ImageGenerateParams,
82    ImageGenerationResponse, InputTokenCount, KnownResponseOutputTextAnnotation, Model,
83    ModerationCreateResponse, ModerationResult, RealtimeClientSecretCreateResponse,
84    RealtimeSessionClientSecret, RealtimeSessionPayload, Response, ResponseError,
85    ResponseFunctionToolCall, ResponseIncompleteDetails, ResponseInputItemPayload,
86    ResponseInputPayload, ResponseInputTokensDetails, ResponseOutputContentPart,
87    ResponseOutputContentPartRaw, ResponseOutputItem, ResponseOutputItemRaw, ResponseOutputMessage,
88    ResponseOutputRefusal, ResponseOutputText, ResponseOutputTextAnnotation,
89    ResponseOutputTextAnnotationUnknown, ResponseOutputTextContainerFileCitation,
90    ResponseOutputTextFileCitation, ResponseOutputTextFilePath, ResponseOutputTextLogprob,
91    ResponseOutputTextTopLogprob, ResponseOutputTextUrlCitation, ResponseOutputTokensDetails,
92    ResponseUsage, Skill, SkillCreateParams, SkillUpdateParams, SkillVersion, SkillVersionContent,
93    SkillVersionCreateParams, UploadObject, UploadPart, VectorStore, VectorStoreAttributeValue,
94    VectorStoreAttributes, VectorStoreExpiresAfter, VectorStoreFile, VectorStoreFileBatch,
95    VectorStoreFileChunkingStrategy, VectorStoreFileContent, VectorStoreFileCounts,
96    VectorStoreFileLastError, VectorStoreMetadata, VectorStoreSearchContent,
97    VectorStoreSearchResponse, VectorStoreSearchResult, VectorStoreStaticFileChunkingStrategy,
98    Video, VideoCharacter, VideoCharacterCreateParams, VideoCreateParams,
99};
100#[cfg(feature = "tool-runner")]
101#[cfg_attr(docsrs, doc(cfg(feature = "tool-runner")))]
102pub use resources::{
103    ChatCompletionRunner, ChatCompletionStreamingRunner, ChatCompletionToolResult,
104};
105pub use response_meta::{ApiResponse, ResponseMeta};
106pub use stream::{
107    AssistantEventStream, AssistantImageFileDoneEvent, AssistantMessageCreatedEvent,
108    AssistantMessageDeltaEvent, AssistantMessageDoneEvent, AssistantRunStepCreatedEvent,
109    AssistantRunStepDeltaEvent, AssistantRunStepDoneEvent, AssistantRuntimeEvent, AssistantStream,
110    AssistantStreamEvent, AssistantStreamSnapshot, AssistantTextCreatedEvent,
111    AssistantTextDeltaEvent, AssistantTextDoneEvent, AssistantToolCallCreatedEvent,
112    AssistantToolCallDeltaEvent, AssistantToolCallDoneEvent, ChatCompletionEventStream,
113    ChatCompletionRuntimeEvent, ChatCompletionStream, ChatContentDoneEvent,
114    ChatContentSnapshotEvent, ChatLogProbsDoneEvent, ChatLogProbsSnapshotEvent,
115    ChatRefusalDoneEvent, ChatRefusalSnapshotEvent, ChatToolArgumentsDoneEvent,
116    ChatToolArgumentsSnapshotEvent, LineDecoder, RawSseStream, ResponseEventStream,
117    ResponseFunctionCallArgumentsEvent, ResponseOutputTextEvent, ResponseRuntimeEvent,
118    ResponseStream, SseEvent, SseStream,
119};
120pub use webhooks::{HeaderLookup, WebhookEvent, WebhookVerifier};
121#[cfg(feature = "responses-ws")]
122#[cfg_attr(docsrs, doc(cfg(feature = "responses-ws")))]
123pub use websocket::OpenAIResponsesWebSocket;
124#[cfg(feature = "realtime")]
125#[cfg_attr(docsrs, doc(cfg(feature = "realtime")))]
126pub use websocket::{OpenAIRealtimeWS, OpenAIRealtimeWebSocket};
127#[cfg(feature = "realtime")]
128#[cfg_attr(docsrs, doc(cfg(feature = "realtime")))]
129pub use websocket::{RealtimeServerEvent, RealtimeSocket, RealtimeStreamMessage};
130#[cfg(feature = "responses-ws")]
131#[cfg_attr(docsrs, doc(cfg(feature = "responses-ws")))]
132pub use websocket::{ResponsesServerEvent, ResponsesSocket, ResponsesStreamMessage};
133#[cfg(any(feature = "realtime", feature = "responses-ws"))]
134#[cfg_attr(docsrs, doc(cfg(any(feature = "realtime", feature = "responses-ws"))))]
135pub use websocket::{SocketCloseOptions, SocketStreamMessage, WebSocketServerEvent};