Path: blob/main/extensions/copilot/src/platform/endpoint/test/node/mockEndpoint.ts
13405 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Raw } from '@vscode/prompt-tsx';6import { modelSupportsToolSearch } from '../../common/chatModelCapabilities';7import { ITokenizer, TokenizerType } from '../../../../util/common/tokenizer';8import { AsyncIterableObject } from '../../../../util/vs/base/common/async';9import { CancellationToken } from '../../../../util/vs/base/common/cancellation';10import { IChatMLFetcher, Source } from '../../../chat/common/chatMLFetcher';11import { ChatLocation, ChatResponse } from '../../../chat/common/commonTypes';12import { CHAT_MODEL } from '../../../configuration/common/configurationService';13import { ILogService } from '../../../log/common/logService';14import { FinishedCallback, OptionalChatRequestParams } from '../../../networking/common/fetch';15import { Response } from '../../../networking/common/fetcherService';16import { createCapiRequestBody, IChatEndpoint, ICreateEndpointBodyOptions, IEndpointBody, IMakeChatRequestOptions } from '../../../networking/common/networking';17import { ChatCompletion } from '../../../networking/common/openai';18import { ITelemetryService, TelemetryProperties } from '../../../telemetry/common/telemetry';19import { TelemetryData } from '../../../telemetry/common/telemetryData';20import { ITokenizerProvider } from '../../../tokenizer/node/tokenizer';2122export class MockEndpoint implements IChatEndpoint {23constructor(24family: string | undefined,25@IChatMLFetcher private readonly _chatMLFetcher: IChatMLFetcher,26@ITokenizerProvider private readonly _tokenizerProvider: ITokenizerProvider,27) {28if (family !== undefined) {29this.family = family;30this.model = family;31this.supportsToolSearch = modelSupportsToolSearch(family);32}33}3435isPremium: boolean = false;36multiplier: number = 0;37restrictedToSkus?: string[] | undefined;3839maxOutputTokens: number = 50000;40model: string = CHAT_MODEL.GPT41;41modelProvider: string = 'Mock Endpoint';42supportsToolCalls: boolean = false;43supportsToolSearch?: boolean;44supportsVision: boolean = false;45supportsPrediction: boolean = true;46showInModelPicker: boolean = true;47isDefault: boolean = false;48isFallback: boolean = false;49policy: 'enabled' | { terms: string } = 'enabled';50urlOrRequestMetadata: string = 'https://microsoft.com';51modelMaxPromptTokens: number = 50000;52name: string = 'test';53family: string = 'test';54version: string = '1.0';55tokenizer: TokenizerType = TokenizerType.O200K;5657processResponseFromChatEndpoint(telemetryService: ITelemetryService, logService: ILogService, response: Response, expectedNumChoices: number, finishCallback: FinishedCallback, telemetryData: TelemetryData, cancellationToken?: CancellationToken): Promise<AsyncIterableObject<ChatCompletion>> {58throw new Error('Method not implemented.');59}6061acceptChatPolicy(): Promise<boolean> {62throw new Error('Method not implemented.');63}6465makeChatRequest2(options: IMakeChatRequestOptions, token: CancellationToken): Promise<ChatResponse> {66return this._chatMLFetcher.fetchOne({67requestOptions: {},68...options,69endpoint: this,70}, token);71}7273createRequestBody(options: ICreateEndpointBodyOptions): IEndpointBody {74return createCapiRequestBody(options, this.model);75}7677public async makeChatRequest(78debugName: string,79messages: Raw.ChatMessage[],80finishedCb: FinishedCallback | undefined,81token: CancellationToken,82location: ChatLocation,83source?: Source,84requestOptions?: Omit<OptionalChatRequestParams, 'n'>,85userInitiatedRequest?: boolean,86telemetryProperties?: TelemetryProperties,87): Promise<ChatResponse> {88return this.makeChatRequest2({89debugName,90messages,91finishedCb,92location,93source,94requestOptions,95userInitiatedRequest,96telemetryProperties,97}, token);98}99100cloneWithTokenOverride(modelMaxPromptTokens: number): IChatEndpoint {101throw new Error('Method not implemented.');102}103104getExtraHeaders?(): Record<string, string> {105throw new Error('Method not implemented.');106}107108interceptBody?(body: IEndpointBody | undefined): void {109throw new Error('Method not implemented.');110}111112acquireTokenizer(): ITokenizer {113return this._tokenizerProvider.acquireTokenizer(this);114}115}116117118