diff --git a/.changeset/tender-horses-rhyme.md b/.changeset/tender-horses-rhyme.md new file mode 100644 index 0000000000000000000000000000000000000000..8e4e1093065666f64635272b434a092e39a3c41e --- /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 bbe96704d6bd1c7ec3cab94074ba55aae15b7487..5cbece915d98a3d2b6b299148214dd2976f574b0 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 af8c72e9eef13773716b7314c2f762298f82ba86..300627659fb8cd75dd3378b67104adde9a0e4300 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 eb52f0748b5cba1bf49ba25981c61cb7318fe52a..e43c23008c1ac628639cf146de1d897dd8c52b5c 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 6bbbfba3ae7ea145e777b5acb2132a94728a1201..1f8c8820535bb62fd3f241124a98b5925a013ffa 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 dde47c30c3735b025eb1682853750b3c33925239..d271a67333dd7655a8e943987f8f557168c50165 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 f972faf7d6f049648bf5c5a09f81d17552fff5f7..94928e251b023c4e41508c8e6117947abe27e86b 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 f51c58d8007c12791af580505531a4990c07508b..72bcceab4e5fc3ccd2304122dfa349eed2a92d65 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