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