@nomyx/assistant
Version:
A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)
110 lines (109 loc) • 2.61 kB
TypeScript
import { ChatMessage, ChatOptions } from '../../../types/chat';
import { Tool } from '../../../types/tool';
export interface OpenRouterProviderConfig {
apiKey: string;
model?: string;
baseUrl?: string;
httpReferer?: string;
xTitle?: string;
}
export interface OpenRouterChatRequestBody {
messages: OpenRouterMessage[];
model?: string;
prompt?: string;
response_format?: {
type: 'json_object';
};
stop?: string | string[];
stream?: boolean;
max_tokens?: number;
temperature?: number;
top_p?: number;
top_k?: number;
frequency_penalty?: number;
presence_penalty?: number;
repetition_penalty?: number;
seed?: number;
tools?: OpenRouterTool[];
tool_choice?: OpenRouterToolChoice;
logit_bias?: {
[key: number]: number;
};
transforms?: string[];
models?: string[];
route?: 'fallback';
provider?: ProviderPreferences;
}
export type OpenRouterMessageContent = string | OpenRouterContentPart[];
export interface OpenRouterMessage {
role: 'user' | 'assistant' | 'system' | 'tool';
content: OpenRouterMessageContent;
name?: string;
tool_calls?: OpenRouterToolCall[];
}
export interface OpenRouterToolCall {
id?: string;
type: 'function';
function: {
name: string;
arguments: string;
};
}
export type OpenRouterContentPart = {
type: 'text';
text: string;
} | {
type: 'image_url';
image_url: {
url: string;
detail?: string;
};
};
export interface OpenRouterTool {
type: 'function';
function: {
description?: string;
name: string;
parameters: object;
};
}
export type OpenRouterToolChoice = 'none' | 'auto' | {
type: 'function';
function: {
name: string;
};
};
export interface OpenRouterDelta {
role?: string;
content?: string;
tool_calls?: OpenRouterToolCall[];
}
export interface OpenRouterChatResponse {
id: string;
object: string;
created: number;
model: string;
choices: {
index: number;
message?: {
role: string;
content: string;
tool_calls?: OpenRouterToolCall[];
};
delta?: OpenRouterDelta;
finish_reason: string | null;
}[];
usage?: {
prompt_tokens: number;
completion_tokens: number;
total_tokens: number;
};
}
export interface ProviderPreferences {
require_parameters?: boolean;
}
export type OpenRouterCacheKey = {
messages: ChatMessage[];
options: ChatOptions;
tools?: Tool[];
};