142 lines
2.7 KiB
TypeScript
142 lines
2.7 KiB
TypeScript
export interface OpenAIChatRequest {
|
|
model: string;
|
|
messages: OpenAIMessage[];
|
|
temperature?: number;
|
|
top_p?: number;
|
|
max_tokens?: number;
|
|
stream?: boolean;
|
|
size?: string;
|
|
quality?: string;
|
|
extra?: Record<string, any>;
|
|
}
|
|
|
|
export interface OpenAIMessage {
|
|
role: string;
|
|
content: string | OpenAIContentPart[];
|
|
name?: string;
|
|
}
|
|
|
|
export interface OpenAIContentPart {
|
|
type: 'text' | 'image_url';
|
|
text?: string;
|
|
image_url?: {
|
|
url: string;
|
|
};
|
|
}
|
|
|
|
export interface AnthropicChatRequest {
|
|
model: string;
|
|
messages: AnthropicMessage[];
|
|
system?: string | AnthropicSystemBlock[];
|
|
max_tokens?: number;
|
|
metadata?: any;
|
|
stop_sequences?: string[];
|
|
stream?: boolean;
|
|
temperature?: number;
|
|
top_p?: number;
|
|
top_k?: number;
|
|
}
|
|
|
|
export interface AnthropicMessage {
|
|
role: string;
|
|
content: string | AnthropicContent[];
|
|
}
|
|
|
|
export interface AnthropicSystemBlock {
|
|
type: string;
|
|
text: string;
|
|
}
|
|
|
|
export type AnthropicContent =
|
|
| { type: 'text'; text: string }
|
|
| { type: 'thinking'; thinking: string; signature?: string }
|
|
| { type: 'image'; source: AnthropicImageSource };
|
|
|
|
export interface AnthropicImageSource {
|
|
type: 'base64';
|
|
media_type: string;
|
|
data: string;
|
|
}
|
|
|
|
export interface GeminiContent {
|
|
role: string;
|
|
parts: GeminiPart[];
|
|
}
|
|
|
|
export interface GeminiPart {
|
|
text?: string;
|
|
inlineData?: GeminiInlineData;
|
|
thoughtSignature?: string;
|
|
}
|
|
|
|
export interface GeminiInlineData {
|
|
mimeType: string;
|
|
data: string;
|
|
}
|
|
|
|
export interface GeminiRequest {
|
|
contents: GeminiContent[];
|
|
systemInstruction?: { parts: GeminiPart[] };
|
|
generationConfig?: GeminiGenerationConfig;
|
|
}
|
|
|
|
export interface GeminiGenerationConfig {
|
|
temperature?: number;
|
|
maxOutputTokens?: number;
|
|
topP?: number;
|
|
topK?: number;
|
|
}
|
|
|
|
export interface GeminiResponse {
|
|
candidates?: GeminiCandidate[];
|
|
usageMetadata?: GeminiUsageMetadata;
|
|
}
|
|
|
|
export interface GeminiCandidate {
|
|
content?: GeminiContent;
|
|
finishReason?: string;
|
|
index?: number;
|
|
}
|
|
|
|
export interface GeminiUsageMetadata {
|
|
promptTokenCount?: number;
|
|
candidatesTokenCount?: number;
|
|
totalTokenCount?: number;
|
|
}
|
|
|
|
export interface OpenAIChatResponse {
|
|
id: string;
|
|
object: string;
|
|
created: number;
|
|
model: string;
|
|
choices: OpenAIChoice[];
|
|
usage: {
|
|
prompt_tokens: number;
|
|
completion_tokens: number;
|
|
total_tokens: number;
|
|
};
|
|
}
|
|
|
|
export interface OpenAIChoice {
|
|
index: number;
|
|
message: {
|
|
role: string;
|
|
content: string;
|
|
};
|
|
finish_reason: string;
|
|
}
|
|
|
|
export interface AnthropicChatResponse {
|
|
id: string;
|
|
type: string;
|
|
role: string;
|
|
model: string;
|
|
content: AnthropicContent[];
|
|
stop_reason: string | null;
|
|
stop_sequence: string | null;
|
|
usage: {
|
|
input_tokens: number;
|
|
output_tokens: number;
|
|
};
|
|
}
|