123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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",
- "x-requested-with": "XMLHttpRequest",
- };
- 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;
- }
|