From 8a729cdd0df5fa29933a6eb72a2c9c73477ecf0b Mon Sep 17 00:00:00 2001 From: yisding <yi.s.ding@gmail.com> Date: Wed, 24 Jan 2024 22:59:09 -0800 Subject: [PATCH] minor bug fixes with together AI (#440) --- .changeset/tender-horses-rhyme.md | 5 ++++ .prettierignore | 1 + examples/together-ai.ts | 1 + packages/core/package.json | 2 +- .../core/src/embeddings/OpenAIEmbedding.ts | 2 +- packages/core/src/embeddings/together.ts | 26 +++++++++++++------ packages/core/src/llm/together.ts | 24 ++++++++++++----- pnpm-lock.yaml | 2 +- 8 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 .changeset/tender-horses-rhyme.md diff --git a/.changeset/tender-horses-rhyme.md b/.changeset/tender-horses-rhyme.md new file mode 100644 index 000000000..8e4e10930 --- /dev/null +++ b/.changeset/tender-horses-rhyme.md @@ -0,0 +1,5 @@ +--- +"llamaindex": patch +--- + +fix bugs in Together.AI integration (thanks @Nutlope for reporting) diff --git a/.prettierignore b/.prettierignore index bbe96704d..5cbece915 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ apps/docs/i18n +apps/docs/docs/api pnpm-lock.yaml lib/ dist/ diff --git a/examples/together-ai.ts b/examples/together-ai.ts index af8c72e9e..300627659 100644 --- a/examples/together-ai.ts +++ b/examples/together-ai.ts @@ -23,6 +23,7 @@ const together = new TogetherLLM({ for await (const message of generator) { process.stdout.write(message.delta); } + console.log(); const embedding = new TogetherEmbedding(); const vector = await embedding.getTextEmbedding("Hello world!"); console.log("vector:", vector); diff --git a/packages/core/package.json b/packages/core/package.json index eb52f0748..e43c23008 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,7 +11,7 @@ "@qdrant/js-client-rest": "^1.7.0", "@xenova/transformers": "^2.10.0", "assemblyai": "^4.0.0", - "chromadb": "^1.7.3", + "chromadb": "~1.7.3", "file-type": "^18.7.0", "js-tiktoken": "^1.0.8", "lodash": "^4.17.21", diff --git a/packages/core/src/embeddings/OpenAIEmbedding.ts b/packages/core/src/embeddings/OpenAIEmbedding.ts index 6bbbfba3a..1f8c88205 100644 --- a/packages/core/src/embeddings/OpenAIEmbedding.ts +++ b/packages/core/src/embeddings/OpenAIEmbedding.ts @@ -30,7 +30,7 @@ export class OpenAIEmbedding extends BaseEmbedding { constructor(init?: Partial<OpenAIEmbedding> & { azure?: AzureOpenAIConfig }) { super(); - this.model = OpenAIEmbeddingModelType.TEXT_EMBED_ADA_002; + this.model = init?.model ?? OpenAIEmbeddingModelType.TEXT_EMBED_ADA_002; this.maxRetries = init?.maxRetries ?? 10; this.timeout = init?.timeout ?? 60 * 1000; // Default is 60 seconds diff --git a/packages/core/src/embeddings/together.ts b/packages/core/src/embeddings/together.ts index dde47c30c..d271a6733 100644 --- a/packages/core/src/embeddings/together.ts +++ b/packages/core/src/embeddings/together.ts @@ -1,16 +1,26 @@ import { OpenAIEmbedding } from "./OpenAIEmbedding"; export class TogetherEmbedding extends OpenAIEmbedding { - override model: string; constructor(init?: Partial<OpenAIEmbedding>) { + const { + apiKey = process.env.TOGETHER_API_KEY, + additionalSessionOptions = {}, + model = "togethercomputer/m2-bert-80M-32k-retrieval", + ...rest + } = init ?? {}; + + if (!apiKey) { + throw new Error("Set Together Key in TOGETHER_API_KEY env variable"); // Tell user to set correct env variable, and not OPENAI_API_KEY + } + + additionalSessionOptions.baseURL = + additionalSessionOptions.baseURL ?? "https://api.together.xyz/v1"; + super({ - apiKey: process.env.TOGETHER_API_KEY, - ...init, - additionalSessionOptions: { - ...init?.additionalSessionOptions, - baseURL: "https://api.together.xyz/v1", - }, + apiKey, + additionalSessionOptions, + model, + ...rest, }); - this.model = init?.model ?? "togethercomputer/m2-bert-80M-32k-retrieval"; } } diff --git a/packages/core/src/llm/together.ts b/packages/core/src/llm/together.ts index f972faf7d..94928e251 100644 --- a/packages/core/src/llm/together.ts +++ b/packages/core/src/llm/together.ts @@ -2,13 +2,25 @@ import { OpenAI } from "./LLM"; export class TogetherLLM extends OpenAI { constructor(init?: Partial<OpenAI>) { + const { + apiKey = process.env.TOGETHER_API_KEY, + additionalSessionOptions = {}, + model = "togethercomputer/llama-2-7b-chat", + ...rest + } = init ?? {}; + + if (!apiKey) { + throw new Error("Set Together Key in TOGETHER_API_KEY env variable"); // Tell user to set correct env variable, and not OPENAI_API_KEY + } + + additionalSessionOptions.baseURL = + additionalSessionOptions.baseURL ?? "https://api.together.xyz/v1"; + super({ - ...init, - apiKey: process.env.TOGETHER_API_KEY, - additionalSessionOptions: { - ...init?.additionalSessionOptions, - baseURL: "https://api.together.xyz/v1", - }, + apiKey, + additionalSessionOptions, + model, + ...rest, }); } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f51c58d80..72bcceab4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -174,7 +174,7 @@ importers: specifier: ^4.0.0 version: 4.0.0 chromadb: - specifier: ^1.7.3 + specifier: ~1.7.3 version: 1.7.3(openai@4.20.1) file-type: specifier: ^18.7.0 -- GitLab