| import type { TextGenerationInput } from "@huggingface/tasks"; |
| import { resolveProvider } from "../../lib/getInferenceProviderMapping.js"; |
| import { getProviderHelper } from "../../lib/getProviderHelper.js"; |
| import type { BaseArgs, Options } from "../../types.js"; |
| import { innerStreamingRequest } from "../../utils/request.js"; |
|
|
| export interface TextGenerationStreamToken { |
| |
| id: number; |
| |
| text: string; |
| |
| logprob: number; |
| |
| |
| |
| |
| special: boolean; |
| } |
|
|
| export interface TextGenerationStreamPrefillToken { |
| |
| id: number; |
| |
| text: string; |
| |
| |
| |
| |
| logprob?: number; |
| } |
|
|
| export interface TextGenerationStreamBestOfSequence { |
| |
| generated_text: string; |
| |
| finish_reason: TextGenerationStreamFinishReason; |
| |
| generated_tokens: number; |
| |
| seed?: number; |
| |
| prefill: TextGenerationStreamPrefillToken[]; |
| |
| tokens: TextGenerationStreamToken[]; |
| } |
|
|
| export type TextGenerationStreamFinishReason = |
| |
| | "length" |
| |
| | "eos_token" |
| |
| | "stop_sequence"; |
|
|
| export interface TextGenerationStreamDetails { |
| |
| finish_reason: TextGenerationStreamFinishReason; |
| |
| generated_tokens: number; |
| |
| seed?: number; |
| |
| prefill: TextGenerationStreamPrefillToken[]; |
| |
| tokens: TextGenerationStreamToken[]; |
| |
| best_of_sequences?: TextGenerationStreamBestOfSequence[]; |
| } |
|
|
| export interface TextGenerationStreamOutput { |
| index?: number; |
| |
| token: TextGenerationStreamToken; |
| |
| |
| |
| |
| generated_text: string | null; |
| |
| |
| |
| |
| details: TextGenerationStreamDetails | null; |
| } |
|
|
| |
| |
| |
| export async function* textGenerationStream( |
| args: BaseArgs & TextGenerationInput, |
| options?: Options |
| ): AsyncGenerator<TextGenerationStreamOutput> { |
| const provider = await resolveProvider(args.provider, args.model, args.endpointUrl); |
| const providerHelper = getProviderHelper(provider, "text-generation"); |
| yield* innerStreamingRequest<TextGenerationStreamOutput>(args, providerHelper, { |
| ...options, |
| task: "text-generation", |
| }); |
| } |
|
|