1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { ACCESS_CODE_PREFIX } from "../constant";
- import { ModelConfig, ModelType, useAccessStore } from "../store";
- import { ChatGPTApi } from "./platforms/openai";
- export const ROLES = ["system", "user", "assistant"] as const;
- export type MessageRole = (typeof ROLES)[number];
- export const Models = ["gpt-3.5-turbo", "gpt-4"] as const;
- export type ChatModel = ModelType;
- export interface RequestMessage {
- role: MessageRole;
- content: string;
- }
- export interface LLMConfig {
- model: string;
- temperature?: number;
- top_p?: number;
- stream?: boolean;
- presence_penalty?: number;
- frequency_penalty?: number;
- }
- export interface ChatOptions {
- messages: RequestMessage[];
- config: LLMConfig;
- onUpdate?: (message: string, chunk: string) => void;
- onFinish: (message: string) => void;
- onError?: (err: Error) => void;
- onController?: (controller: AbortController) => void;
- }
- export interface LLMUsage {
- used: number;
- total: number;
- }
- export abstract class LLMApi {
- abstract chat(options: ChatOptions): Promise<void>;
- abstract usage(): Promise<LLMUsage>;
- }
- export class ClientApi {
- public llm: LLMApi;
- constructor() {
- this.llm = new ChatGPTApi();
- }
- config() {}
- prompts() {}
- masks() {}
- }
- export const api = new ClientApi();
- export function getHeaders() {
- const accessStore = useAccessStore.getState();
- let headers: Record<string, string> = {
- "Content-Type": "application/json",
- };
- const makeBearer = (token: string) => `Bearer ${token.trim()}`;
- const validString = (x: string) => x && x.length > 0;
- // use user's api key first
- if (validString(accessStore.token)) {
- headers.Authorization = makeBearer(accessStore.token);
- } else if (
- accessStore.enabledAccessControl() &&
- validString(accessStore.accessCode)
- ) {
- headers.Authorization = makeBearer(
- ACCESS_CODE_PREFIX + accessStore.accessCode,
- );
- }
- return headers;
- }
|