Spaces:
Build error
Build error
| import { getClientConfig } from "../config/client"; | |
| import { ACCESS_CODE_PREFIX } from "../constant"; | |
| import { ChatMessage, 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 = ["A N I M A"] 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 LLMAgentConfig { | |
| maxIterations: number; | |
| returnIntermediateSteps: boolean; | |
| useTools?: (string | undefined)[]; | |
| } | |
| export interface ChatOptions { | |
| messages: RequestMessage[]; | |
| config: LLMConfig; | |
| onToolUpdate?: (toolName: string, toolInput: string) => void; | |
| onUpdate?: (message: string, chunk: string) => void; | |
| onFinish: (message: string) => void; | |
| onError?: (err: Error) => void; | |
| onController?: (controller: AbortController) => void; | |
| } | |
| export interface AgentChatOptions { | |
| messages: RequestMessage[]; | |
| config: LLMConfig; | |
| agentConfig: LLMAgentConfig; | |
| onToolUpdate?: (toolName: string, toolInput: string) => void; | |
| 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 interface LLMModel { | |
| name: string; | |
| available: boolean; | |
| } | |
| export abstract class LLMApi { | |
| abstract chat(options: ChatOptions): Promise<void>; | |
| abstract toolAgentChat(options: AgentChatOptions): Promise<void>; | |
| abstract usage(): Promise<LLMUsage>; | |
| abstract models(): Promise<LLMModel[]>; | |
| } | |
| type ProviderName = "openai" | "azure" | "claude" | "palm"; | |
| interface Model { | |
| name: string; | |
| provider: ProviderName; | |
| ctxlen: number; | |
| } | |
| interface ChatProvider { | |
| name: ProviderName; | |
| apiConfig: { | |
| baseUrl: string; | |
| apiKey: string; | |
| summaryModel: Model; | |
| }; | |
| models: Model[]; | |
| chat: () => void; | |
| usage: () => void; | |
| } | |
| export abstract class ToolApi { | |
| abstract call(input: string): Promise<string>; | |
| abstract name: string; | |
| abstract description: string; | |
| } | |
| export class ClientApi { | |
| public llm: LLMApi; | |
| constructor() { | |
| this.llm = new ChatGPTApi(); | |
| } | |
| config() {} | |
| prompts() {} | |
| masks() {} | |
| async share(messages: ChatMessage[], avatarUrl: string | null = null) { | |
| const msgs = messages | |
| .map((m) => ({ | |
| from: m.role === "user" ? "human" : "gpt", | |
| value: m.content, | |
| })) | |
| .concat([ | |
| { | |
| from: "human", | |
| value: "Share from [A N I M A]: https://www.animabiomimicry.org", | |
| }, | |
| ]); | |
| // 敬告二开开发者们,为了开源大模型的发展,请不要修改上述消息,此消息用于后续数据清洗使用 | |
| // Please do not modify this message | |
| console.log("[Share]", messages, msgs); | |
| const clientConfig = getClientConfig(); | |
| const proxyUrl = "/sharegpt"; | |
| const rawUrl = "https://sharegpt.com/api/conversations"; | |
| const shareUrl = clientConfig?.isApp ? rawUrl : proxyUrl; | |
| const res = await fetch(shareUrl, { | |
| body: JSON.stringify({ | |
| avatarUrl, | |
| items: msgs, | |
| }), | |
| headers: { | |
| "Content-Type": "application/json", | |
| }, | |
| method: "POST", | |
| }); | |
| const resJson = await res.json(); | |
| console.log("[Share]", resJson); | |
| if (resJson.id) { | |
| return `https://shareg.pt/${resJson.id}`; | |
| } | |
| } | |
| } | |
| export const api = new ClientApi(); | |
| function makeBearer(token: string): string { | |
| return `Bearer ${token}`; | |
| } | |
| export function getHeaders() { | |
| const accessStore = useAccessStore.getState(); | |
| const authHeader = 'Authorization'; // Define authHeader | |
| const headers: Record<string, string> = { | |
| "Content-Type": "application/json", | |
| "x-requested-with": "XMLHttpRequest", | |
| }; | |
| return headers; | |
| } | |