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
TypeScript
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>;
}