UNPKG

askexperts

Version:

AskExperts SDK: build and use AI experts - ask them questions and pay with bitcoin on an open protocol

86 lines (85 loc) 2.7 kB
import { AskExpertsServer } from "../server/AskExpertsServer.js"; import { ExpertQuote, ExpertReply, ExpertReplies, Prompt, ExpertPrice } from "../common/types.js"; import { OpenaiInterface } from "../openai/index.js"; /** * OpenAI Expert implementation for NIP-174 * Provides direct access to OpenAI models with pricing based on token usage */ export declare class OpenaiProxyExpertBase { #private; /** * AskExpertsServer instance */ readonly server: AskExpertsServer; /** * OpenAI client */ readonly openai: OpenaiInterface; /** * Creates a new OpenaiExpert instance * * @param options - Configuration options */ constructor(options: { server: AskExpertsServer; openai: OpenaiInterface; model: string; onGetContext?: (prompt: Prompt) => Promise<string>; onGetSystemPrompt?: (prompt: Prompt) => Promise<string>; }); /** * Starts the expert */ start(): Promise<void>; /** * Gets the model ID used by this expert * * @returns The model ID */ get model(): string; get onGetContext(): ((prompt: Prompt) => Promise<string>) | undefined; set onGetContext(value: ((prompt: Prompt) => Promise<string>) | undefined); get onGetSystemPrompt(): ((prompt: Prompt) => Promise<string>) | undefined; set onGetSystemPrompt(value: ((prompt: Prompt) => Promise<string>) | undefined); /** * Handles prompt events * * @param prompt - The prompt event * @returns Promise resolving to a quote */ /** * Count tokens using gpt-tokenizer * * @param text - Text to count tokens for * @returns Token count */ private countTokens; /** * Callback that fetches the system prompt and context for * this prompt and estimates it's price. Made public to be * reusable. * @param prompt - prompt * @returns - expert price */ /** * Creates ChatCompletionCreateParams from a prompt * * @param prompt - The prompt to create params for * @returns ChatCompletionCreateParams object */ private createChatCompletionCreateParams; onPromptPrice(prompt: Prompt): Promise<ExpertPrice>; private produceReplies; /** * Executes prompts after the quote was paid * * @param prompt - The prompt event * @param quote - The quote * @returns Promise resolving to the expert's reply */ onPromptPaid(prompt: Prompt, quote: ExpertQuote): Promise<ExpertReply | ExpertReplies>; /** * Disposes of resources when the expert is no longer needed */ [Symbol.asyncDispose](): Promise<void>; }