Joh/ministerial-swan (#212096)

* first cut of embeddings API

https://github.com/microsoft/vscode/issues/212083

* add event

* fix tests
This commit is contained in:
Johannes Rieken
2024-05-06 16:50:13 +02:00
committed by GitHub
parent facea7e2c2
commit 6874fc7394
8 changed files with 277 additions and 1 deletions

View File

@@ -44,6 +44,7 @@ import { ExtHostDocumentSaveParticipant } from 'vs/workbench/api/common/extHostD
import { ExtHostDocuments } from 'vs/workbench/api/common/extHostDocuments';
import { IExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';
import { IExtHostEditorTabs } from 'vs/workbench/api/common/extHostEditorTabs';
import { ExtHostEmbeddings } from 'vs/workbench/api/common/extHostEmbedding';
import { ExtHostAiEmbeddingVector } from 'vs/workbench/api/common/extHostEmbeddingVector';
import { Extension, IExtHostExtensionService } from 'vs/workbench/api/common/extHostExtensionService';
import { ExtHostFileSystem } from 'vs/workbench/api/common/extHostFileSystem';
@@ -214,6 +215,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
const extHostAiEmbeddingVector = rpcProtocol.set(ExtHostContext.ExtHostAiEmbeddingVector, new ExtHostAiEmbeddingVector(rpcProtocol));
const extHostStatusBar = rpcProtocol.set(ExtHostContext.ExtHostStatusBar, new ExtHostStatusBar(rpcProtocol, extHostCommands.converter));
const extHostSpeech = rpcProtocol.set(ExtHostContext.ExtHostSpeech, new ExtHostSpeech(rpcProtocol));
const extHostEmbeddings = rpcProtocol.set(ExtHostContext.ExtHostEmbeddings, new ExtHostEmbeddings(rpcProtocol));
// Check that no named customers are missing
const expected = Object.values<ProxyIdentifier<any>>(ExtHostContext);
@@ -1450,6 +1452,27 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
getLanguageModelInformation(languageModel: string) {
checkProposedApiEnabled(extension, 'languageModels');
return extHostLanguageModels.getLanguageModelInfo(languageModel);
},
// --- embeddings
get embeddingModels() {
checkProposedApiEnabled(extension, 'embeddings');
return extHostEmbeddings.embeddingsModels;
},
onDidChangeEmbeddingModels: (listener, thisArgs?, disposables?) => {
checkProposedApiEnabled(extension, 'embeddings');
return extHostEmbeddings.onDidChange(listener, thisArgs, disposables);
},
registerEmbeddingsProvider(embeddingsModel, provider) {
checkProposedApiEnabled(extension, 'embeddings');
return extHostEmbeddings.registerEmbeddingsProvider(extension, embeddingsModel, provider);
},
async computeEmbeddings(embeddingsModel, input, token?): Promise<any> {
checkProposedApiEnabled(extension, 'embeddings');
if (typeof input === 'string') {
return extHostEmbeddings.computeEmbeddings(embeddingsModel, input, token);
} else {
return extHostEmbeddings.computeEmbeddings(embeddingsModel, input, token);
}
}
};