langchain 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/agents/agent.d.ts +54 -0
- package/dist/cjs/agents/agent.js +81 -59
- package/dist/cjs/agents/agent.js.map +1 -1
- package/dist/cjs/agents/executor.d.ts +5 -0
- package/dist/cjs/agents/executor.js +36 -42
- package/dist/cjs/agents/executor.js.map +1 -1
- package/dist/cjs/agents/helpers.js +4 -13
- package/dist/cjs/agents/helpers.js.map +1 -1
- package/dist/cjs/agents/index.d.ts +1 -0
- package/dist/cjs/agents/index.js +5 -1
- package/dist/cjs/agents/index.js.map +1 -1
- package/dist/cjs/agents/initialize.d.ts +4 -0
- package/dist/cjs/agents/initialize.js +21 -0
- package/dist/cjs/agents/initialize.js.map +1 -0
- package/dist/cjs/agents/load.js +6 -15
- package/dist/cjs/agents/load.js.map +1 -1
- package/dist/cjs/agents/mrkl/index.d.ts +17 -0
- package/dist/cjs/agents/mrkl/index.js +21 -29
- package/dist/cjs/agents/mrkl/index.js.map +1 -1
- package/dist/cjs/agents/mrkl/prompt.js +0 -1
- package/dist/cjs/agents/mrkl/prompt.js.map +1 -1
- package/dist/cjs/agents/tests/agent.test.js +19 -15
- package/dist/cjs/agents/tests/agent.test.js.map +1 -1
- package/dist/cjs/agents/tests/calculator.test.d.ts +1 -0
- package/dist/cjs/agents/tests/calculator.test.js +30 -0
- package/dist/cjs/agents/tests/calculator.test.js.map +1 -0
- package/dist/cjs/agents/tools/base.d.ts +6 -0
- package/dist/cjs/agents/tools/base.js +15 -0
- package/dist/cjs/agents/tools/base.js.map +1 -0
- package/dist/cjs/agents/tools/calculator.d.ts +6 -0
- package/dist/cjs/agents/tools/calculator.js +33 -0
- package/dist/cjs/agents/tools/calculator.js.map +1 -0
- package/dist/cjs/agents/tools/index.d.ts +2 -6
- package/dist/cjs/agents/tools/index.js +5 -1
- package/dist/cjs/agents/tools/index.js.map +1 -1
- package/dist/cjs/agents/tools/serpapi.d.ts +18 -3
- package/dist/cjs/agents/tools/serpapi.js +88 -45
- package/dist/cjs/agents/tools/serpapi.js.map +1 -1
- package/dist/cjs/chains/base.d.ts +34 -4
- package/dist/cjs/chains/base.js +41 -3
- package/dist/cjs/chains/base.js.map +1 -1
- package/dist/cjs/chains/chat_vector_db_chain.d.ts +41 -0
- package/dist/cjs/chains/chat_vector_db_chain.js +132 -0
- package/dist/cjs/chains/chat_vector_db_chain.js.map +1 -0
- package/dist/cjs/chains/combine_docs_chain.d.ts +35 -0
- package/dist/cjs/chains/combine_docs_chain.js +75 -0
- package/dist/cjs/chains/combine_docs_chain.js.map +1 -0
- package/dist/cjs/chains/conversation.d.ts +12 -0
- package/dist/cjs/chains/conversation.js +29 -0
- package/dist/cjs/chains/conversation.js.map +1 -0
- package/dist/cjs/chains/index.d.ts +5 -1
- package/dist/cjs/chains/index.js +10 -1
- package/dist/cjs/chains/index.js.map +1 -1
- package/dist/cjs/chains/llm_chain.d.ts +35 -0
- package/dist/cjs/chains/llm_chain.js +66 -34
- package/dist/cjs/chains/llm_chain.js.map +1 -1
- package/dist/cjs/chains/load.d.ts +20 -1
- package/dist/cjs/chains/load.js +25 -17
- package/dist/cjs/chains/load.js.map +1 -1
- package/dist/cjs/chains/question_answering/load.d.ts +3 -0
- package/dist/cjs/chains/question_answering/load.js +13 -0
- package/dist/cjs/chains/question_answering/load.js.map +1 -0
- package/dist/cjs/chains/question_answering/stuff_prompts.d.ts +2 -0
- package/dist/cjs/chains/question_answering/stuff_prompts.js +10 -0
- package/dist/cjs/chains/question_answering/stuff_prompts.js.map +1 -0
- package/dist/cjs/chains/question_answering/tests/load.test.d.ts +1 -0
- package/dist/cjs/chains/question_answering/tests/load.test.js +14 -0
- package/dist/cjs/chains/question_answering/tests/load.test.js.map +1 -0
- package/dist/cjs/chains/tests/chat_vector_db_qa_chain.test.d.ts +1 -0
- package/dist/cjs/chains/tests/chat_vector_db_qa_chain.test.js +35 -0
- package/dist/cjs/chains/tests/chat_vector_db_qa_chain.test.js.map +1 -0
- package/dist/cjs/chains/tests/combine_docs_chain.test.d.ts +1 -0
- package/dist/cjs/chains/tests/combine_docs_chain.test.js +28 -0
- package/dist/cjs/chains/tests/combine_docs_chain.test.js.map +1 -0
- package/dist/cjs/chains/tests/llm_chain.test.js +13 -16
- package/dist/cjs/chains/tests/llm_chain.test.js.map +1 -1
- package/dist/cjs/chains/tests/vector_db_qa_chain.test.d.ts +1 -0
- package/dist/cjs/chains/tests/vector_db_qa_chain.test.js +46 -0
- package/dist/cjs/chains/tests/vector_db_qa_chain.test.js.map +1 -0
- package/dist/cjs/chains/vector_db_qa.d.ts +36 -0
- package/dist/cjs/chains/vector_db_qa.js +85 -0
- package/dist/cjs/chains/vector_db_qa.js.map +1 -0
- package/dist/cjs/document.d.ts +13 -0
- package/dist/cjs/document.js +28 -0
- package/dist/cjs/document.js.map +1 -0
- package/dist/cjs/embeddings/base.d.ts +4 -0
- package/dist/cjs/embeddings/base.js +7 -0
- package/dist/cjs/embeddings/base.js.map +1 -0
- package/dist/cjs/embeddings/index.d.ts +1 -0
- package/dist/cjs/embeddings/index.js +6 -0
- package/dist/cjs/embeddings/index.js.map +1 -0
- package/dist/cjs/embeddings/openai.d.ts +20 -0
- package/dist/cjs/embeddings/openai.js +86 -0
- package/dist/cjs/embeddings/openai.js.map +1 -0
- package/dist/cjs/embeddings/tests/openai.test.d.ts +1 -0
- package/dist/cjs/embeddings/tests/openai.test.js +17 -0
- package/dist/cjs/embeddings/tests/openai.test.js.map +1 -0
- package/dist/cjs/llms/base.d.ts +41 -0
- package/dist/cjs/llms/base.js +97 -92
- package/dist/cjs/llms/base.js.map +1 -1
- package/dist/cjs/llms/index.d.ts +19 -0
- package/dist/cjs/llms/load.d.ts +10 -2
- package/dist/cjs/llms/load.js +12 -4
- package/dist/cjs/llms/load.js.map +1 -1
- package/dist/cjs/llms/openai.d.ts +69 -7
- package/dist/cjs/llms/openai.js +96 -58
- package/dist/cjs/llms/openai.js.map +1 -1
- package/dist/cjs/llms/tests/openai.test.js +3 -12
- package/dist/cjs/llms/tests/openai.test.js.map +1 -1
- package/dist/cjs/memory/base.d.ts +7 -0
- package/dist/cjs/memory/base.js +7 -0
- package/dist/cjs/memory/base.js.map +1 -0
- package/dist/cjs/memory/buffer_memory.d.ts +15 -0
- package/dist/cjs/memory/buffer_memory.js +57 -0
- package/dist/cjs/memory/buffer_memory.js.map +1 -0
- package/dist/cjs/memory/index.d.ts +2 -0
- package/dist/cjs/memory/index.js +8 -0
- package/dist/cjs/memory/index.js.map +1 -0
- package/dist/cjs/memory/tests/buffer_memory.test.d.ts +1 -0
- package/dist/cjs/memory/tests/buffer_memory.test.js +17 -0
- package/dist/cjs/memory/tests/buffer_memory.test.js.map +1 -0
- package/dist/cjs/prompt/base.d.ts +39 -0
- package/dist/cjs/prompt/base.js +24 -25
- package/dist/cjs/prompt/base.js.map +1 -1
- package/dist/cjs/prompt/few_shot.d.ts +36 -1
- package/dist/cjs/prompt/few_shot.js +27 -33
- package/dist/cjs/prompt/few_shot.js.map +1 -1
- package/dist/cjs/prompt/index.d.ts +1 -0
- package/dist/cjs/prompt/index.js +3 -1
- package/dist/cjs/prompt/index.js.map +1 -1
- package/dist/cjs/prompt/load.d.ts +17 -0
- package/dist/cjs/prompt/load.js +21 -13
- package/dist/cjs/prompt/load.js.map +1 -1
- package/dist/cjs/prompt/parser.d.ts +30 -0
- package/dist/cjs/prompt/parser.js +21 -0
- package/dist/cjs/prompt/parser.js.map +1 -1
- package/dist/cjs/prompt/prompt.d.ts +48 -0
- package/dist/cjs/prompt/prompt.js +38 -18
- package/dist/cjs/prompt/prompt.js.map +1 -1
- package/dist/cjs/prompt/template.js.map +1 -1
- package/dist/cjs/prompt/tests/load.test.js +6 -15
- package/dist/cjs/prompt/tests/load.test.js.map +1 -1
- package/dist/cjs/text_splitter.d.ts +32 -0
- package/dist/cjs/text_splitter.js +165 -0
- package/dist/cjs/text_splitter.js.map +1 -0
- package/dist/cjs/text_splitter.test.d.ts +1 -0
- package/dist/cjs/text_splitter.test.js +87 -0
- package/dist/cjs/text_splitter.test.js.map +1 -0
- package/dist/cjs/util/hub.d.ts +2 -1
- package/dist/cjs/util/hub.js +5 -14
- package/dist/cjs/util/hub.js.map +1 -1
- package/dist/cjs/util/index.d.ts +1 -0
- package/dist/cjs/util/index.js +13 -25
- package/dist/cjs/util/index.js.map +1 -1
- package/dist/cjs/vectorstores/base.d.ts +18 -0
- package/dist/cjs/vectorstores/base.js +38 -0
- package/dist/cjs/vectorstores/base.js.map +1 -0
- package/dist/cjs/vectorstores/hnswlib.d.ts +19 -0
- package/dist/cjs/vectorstores/hnswlib.js +126 -0
- package/dist/cjs/vectorstores/hnswlib.js.map +1 -0
- package/dist/cjs/vectorstores/index.d.ts +1 -0
- package/dist/cjs/vectorstores/index.js +6 -0
- package/dist/cjs/vectorstores/index.js.map +1 -0
- package/dist/cjs/vectorstores/tests/hnswlib.test.d.ts +1 -0
- package/dist/cjs/vectorstores/tests/hnswlib.test.js +44 -0
- package/dist/cjs/vectorstores/tests/hnswlib.test.js.map +1 -0
- package/dist/esm/agents/agent.d.ts +54 -0
- package/dist/esm/agents/agent.js +81 -59
- package/dist/esm/agents/agent.js.map +1 -1
- package/dist/esm/agents/executor.d.ts +5 -0
- package/dist/esm/agents/executor.js +36 -42
- package/dist/esm/agents/executor.js.map +1 -1
- package/dist/esm/agents/helpers.js +4 -13
- package/dist/esm/agents/helpers.js.map +1 -1
- package/dist/esm/agents/index.d.ts +1 -0
- package/dist/esm/agents/index.js +2 -0
- package/dist/esm/agents/index.js.map +1 -1
- package/dist/esm/agents/initialize.d.ts +4 -0
- package/dist/esm/agents/initialize.js +17 -0
- package/dist/esm/agents/initialize.js.map +1 -0
- package/dist/esm/agents/load.js +6 -15
- package/dist/esm/agents/load.js.map +1 -1
- package/dist/esm/agents/mrkl/index.d.ts +17 -0
- package/dist/esm/agents/mrkl/index.js +21 -29
- package/dist/esm/agents/mrkl/index.js.map +1 -1
- package/dist/esm/agents/mrkl/prompt.js +0 -1
- package/dist/esm/agents/mrkl/prompt.js.map +1 -1
- package/dist/esm/agents/tests/agent.test.js +19 -15
- package/dist/esm/agents/tests/agent.test.js.map +1 -1
- package/dist/esm/agents/tests/calculator.test.d.ts +1 -0
- package/dist/esm/agents/tests/calculator.test.js +28 -0
- package/dist/esm/agents/tests/calculator.test.js.map +1 -0
- package/dist/esm/agents/tools/base.d.ts +6 -0
- package/dist/esm/agents/tools/base.js +11 -0
- package/dist/esm/agents/tools/base.js.map +1 -0
- package/dist/esm/agents/tools/calculator.d.ts +6 -0
- package/dist/esm/agents/tools/calculator.js +29 -0
- package/dist/esm/agents/tools/calculator.js.map +1 -0
- package/dist/esm/agents/tools/index.d.ts +2 -6
- package/dist/esm/agents/tools/index.js +2 -0
- package/dist/esm/agents/tools/index.js.map +1 -1
- package/dist/esm/agents/tools/serpapi.d.ts +18 -3
- package/dist/esm/agents/tools/serpapi.js +88 -45
- package/dist/esm/agents/tools/serpapi.js.map +1 -1
- package/dist/esm/chains/base.d.ts +34 -4
- package/dist/esm/chains/base.js +42 -4
- package/dist/esm/chains/base.js.map +1 -1
- package/dist/esm/chains/chat_vector_db_chain.d.ts +41 -0
- package/dist/esm/chains/chat_vector_db_chain.js +128 -0
- package/dist/esm/chains/chat_vector_db_chain.js.map +1 -0
- package/dist/esm/chains/combine_docs_chain.d.ts +35 -0
- package/dist/esm/chains/combine_docs_chain.js +71 -0
- package/dist/esm/chains/combine_docs_chain.js.map +1 -0
- package/dist/esm/chains/conversation.d.ts +12 -0
- package/dist/esm/chains/conversation.js +25 -0
- package/dist/esm/chains/conversation.js.map +1 -0
- package/dist/esm/chains/index.d.ts +5 -1
- package/dist/esm/chains/index.js +5 -1
- package/dist/esm/chains/index.js.map +1 -1
- package/dist/esm/chains/llm_chain.d.ts +35 -0
- package/dist/esm/chains/llm_chain.js +65 -34
- package/dist/esm/chains/llm_chain.js.map +1 -1
- package/dist/esm/chains/load.d.ts +20 -1
- package/dist/esm/chains/load.js +25 -17
- package/dist/esm/chains/load.js.map +1 -1
- package/dist/esm/chains/question_answering/load.d.ts +3 -0
- package/dist/esm/chains/question_answering/load.js +9 -0
- package/dist/esm/chains/question_answering/load.js.map +1 -0
- package/dist/esm/chains/question_answering/stuff_prompts.d.ts +2 -0
- package/dist/esm/chains/question_answering/stuff_prompts.js +7 -0
- package/dist/esm/chains/question_answering/stuff_prompts.js.map +1 -0
- package/dist/esm/chains/question_answering/tests/load.test.d.ts +1 -0
- package/dist/esm/chains/question_answering/tests/load.test.js +12 -0
- package/dist/esm/chains/question_answering/tests/load.test.js.map +1 -0
- package/dist/esm/chains/tests/chat_vector_db_qa_chain.test.d.ts +1 -0
- package/dist/esm/chains/tests/chat_vector_db_qa_chain.test.js +33 -0
- package/dist/esm/chains/tests/chat_vector_db_qa_chain.test.js.map +1 -0
- package/dist/esm/chains/tests/combine_docs_chain.test.d.ts +1 -0
- package/dist/esm/chains/tests/combine_docs_chain.test.js +26 -0
- package/dist/esm/chains/tests/combine_docs_chain.test.js.map +1 -0
- package/dist/esm/chains/tests/llm_chain.test.js +14 -17
- package/dist/esm/chains/tests/llm_chain.test.js.map +1 -1
- package/dist/esm/chains/tests/vector_db_qa_chain.test.d.ts +1 -0
- package/dist/esm/chains/tests/vector_db_qa_chain.test.js +44 -0
- package/dist/esm/chains/tests/vector_db_qa_chain.test.js.map +1 -0
- package/dist/esm/chains/vector_db_qa.d.ts +36 -0
- package/dist/esm/chains/vector_db_qa.js +81 -0
- package/dist/esm/chains/vector_db_qa.js.map +1 -0
- package/dist/esm/document.d.ts +13 -0
- package/dist/esm/document.js +24 -0
- package/dist/esm/document.js.map +1 -0
- package/dist/esm/embeddings/base.d.ts +4 -0
- package/dist/esm/embeddings/base.js +3 -0
- package/dist/esm/embeddings/base.js.map +1 -0
- package/dist/esm/embeddings/index.d.ts +1 -0
- package/dist/esm/embeddings/index.js +2 -0
- package/dist/esm/embeddings/index.js.map +1 -0
- package/dist/esm/embeddings/openai.d.ts +20 -0
- package/dist/esm/embeddings/openai.js +82 -0
- package/dist/esm/embeddings/openai.js.map +1 -0
- package/dist/esm/embeddings/tests/openai.test.d.ts +1 -0
- package/dist/esm/embeddings/tests/openai.test.js +15 -0
- package/dist/esm/embeddings/tests/openai.test.js.map +1 -0
- package/dist/esm/llms/base.d.ts +41 -0
- package/dist/esm/llms/base.js +97 -92
- package/dist/esm/llms/base.js.map +1 -1
- package/dist/esm/llms/index.d.ts +19 -0
- package/dist/esm/llms/load.d.ts +10 -2
- package/dist/esm/llms/load.js +10 -2
- package/dist/esm/llms/load.js.map +1 -1
- package/dist/esm/llms/openai.d.ts +69 -7
- package/dist/esm/llms/openai.js +96 -58
- package/dist/esm/llms/openai.js.map +1 -1
- package/dist/esm/llms/tests/openai.test.js +3 -12
- package/dist/esm/llms/tests/openai.test.js.map +1 -1
- package/dist/esm/memory/base.d.ts +7 -0
- package/dist/esm/memory/base.js +3 -0
- package/dist/esm/memory/base.js.map +1 -0
- package/dist/esm/memory/buffer_memory.d.ts +15 -0
- package/dist/esm/memory/buffer_memory.js +53 -0
- package/dist/esm/memory/buffer_memory.js.map +1 -0
- package/dist/esm/memory/index.d.ts +2 -0
- package/dist/esm/memory/index.js +3 -0
- package/dist/esm/memory/index.js.map +1 -0
- package/dist/esm/memory/tests/buffer_memory.test.d.ts +1 -0
- package/dist/esm/memory/tests/buffer_memory.test.js +15 -0
- package/dist/esm/memory/tests/buffer_memory.test.js.map +1 -0
- package/dist/esm/prompt/base.d.ts +39 -0
- package/dist/esm/prompt/base.js +24 -25
- package/dist/esm/prompt/base.js.map +1 -1
- package/dist/esm/prompt/few_shot.d.ts +36 -1
- package/dist/esm/prompt/few_shot.js +27 -33
- package/dist/esm/prompt/few_shot.js.map +1 -1
- package/dist/esm/prompt/index.d.ts +1 -0
- package/dist/esm/prompt/index.js +1 -0
- package/dist/esm/prompt/index.js.map +1 -1
- package/dist/esm/prompt/load.d.ts +17 -0
- package/dist/esm/prompt/load.js +21 -13
- package/dist/esm/prompt/load.js.map +1 -1
- package/dist/esm/prompt/parser.d.ts +30 -0
- package/dist/esm/prompt/parser.js +21 -0
- package/dist/esm/prompt/parser.js.map +1 -1
- package/dist/esm/prompt/prompt.d.ts +48 -0
- package/dist/esm/prompt/prompt.js +38 -18
- package/dist/esm/prompt/prompt.js.map +1 -1
- package/dist/esm/prompt/template.js.map +1 -1
- package/dist/esm/prompt/tests/load.test.js +6 -15
- package/dist/esm/prompt/tests/load.test.js.map +1 -1
- package/dist/esm/text_splitter.d.ts +32 -0
- package/dist/esm/text_splitter.js +160 -0
- package/dist/esm/text_splitter.js.map +1 -0
- package/dist/esm/text_splitter.test.d.ts +1 -0
- package/dist/esm/text_splitter.test.js +85 -0
- package/dist/esm/text_splitter.test.js.map +1 -0
- package/dist/esm/util/hub.d.ts +2 -1
- package/dist/esm/util/hub.js +5 -14
- package/dist/esm/util/hub.js.map +1 -1
- package/dist/esm/util/index.d.ts +1 -0
- package/dist/esm/util/index.js +11 -24
- package/dist/esm/util/index.js.map +1 -1
- package/dist/esm/vectorstores/base.d.ts +18 -0
- package/dist/esm/vectorstores/base.js +33 -0
- package/dist/esm/vectorstores/base.js.map +1 -0
- package/dist/esm/vectorstores/hnswlib.d.ts +19 -0
- package/dist/esm/vectorstores/hnswlib.js +119 -0
- package/dist/esm/vectorstores/hnswlib.js.map +1 -0
- package/dist/esm/vectorstores/index.d.ts +1 -0
- package/dist/esm/vectorstores/index.js +2 -0
- package/dist/esm/vectorstores/index.js.map +1 -0
- package/dist/esm/vectorstores/tests/hnswlib.test.d.ts +1 -0
- package/dist/esm/vectorstores/tests/hnswlib.test.js +39 -0
- package/dist/esm/vectorstores/tests/hnswlib.test.js.map +1 -0
- package/package.json +65 -38
package/dist/esm/llms/openai.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { backOff } from "exponential-backoff";
|
|
2
|
+
import { chunkArray } from "../util";
|
|
11
3
|
import { BaseLLM } from ".";
|
|
12
4
|
let Configuration = null;
|
|
13
5
|
let OpenAIApi = null;
|
|
14
6
|
try {
|
|
15
|
-
// eslint-disable-next-line global-require
|
|
7
|
+
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
16
8
|
({ Configuration, OpenAIApi } = require("openai"));
|
|
17
9
|
}
|
|
18
10
|
catch (_a) {
|
|
19
11
|
// ignore error
|
|
20
12
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Wrapper around OpenAI large language models.
|
|
15
|
+
*
|
|
16
|
+
* To use you should have the `openai` package installed, with the
|
|
17
|
+
* `OPENAI_API_KEY` environment variable set.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* Any parameters that are valid to be passed to {@link
|
|
21
|
+
* https://platform.openai.com/docs/api-reference/completions/create |
|
|
22
|
+
* `openai.createCompletion`} can be passed through {@link modelKwargs}, even
|
|
23
|
+
* if not explicitly available on this class.
|
|
24
|
+
*
|
|
25
|
+
* @augments BaseLLM
|
|
26
|
+
* @augments OpenAIInput
|
|
27
|
+
*/
|
|
28
28
|
export class OpenAI extends BaseLLM {
|
|
29
29
|
constructor(fields) {
|
|
30
30
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
@@ -114,7 +114,7 @@ export class OpenAI extends BaseLLM {
|
|
|
114
114
|
value: void 0
|
|
115
115
|
});
|
|
116
116
|
if (Configuration === null || OpenAIApi === null) {
|
|
117
|
-
throw new Error("Please install openai as a dependency with, e.g. `npm
|
|
117
|
+
throw new Error("Please install openai as a dependency with, e.g. `npm i openai`");
|
|
118
118
|
}
|
|
119
119
|
this.modelName = (_a = fields === null || fields === void 0 ? void 0 : fields.modelName) !== null && _a !== void 0 ? _a : this.modelName;
|
|
120
120
|
this.modelKwargs = (_b = fields === null || fields === void 0 ? void 0 : fields.modelKwargs) !== null && _b !== void 0 ? _b : {};
|
|
@@ -134,54 +134,92 @@ export class OpenAI extends BaseLLM {
|
|
|
134
134
|
});
|
|
135
135
|
this.client = new OpenAIApi(clientConfig);
|
|
136
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Get the parameters used to invoke the model
|
|
139
|
+
*/
|
|
137
140
|
invocationParams() {
|
|
138
|
-
return
|
|
141
|
+
return {
|
|
142
|
+
model: this.modelName,
|
|
143
|
+
temperature: this.temperature,
|
|
144
|
+
max_tokens: this.maxTokens,
|
|
145
|
+
top_p: this.topP,
|
|
146
|
+
frequency_penalty: this.frequencyPenalty,
|
|
147
|
+
presence_penalty: this.presencePenalty,
|
|
148
|
+
n: this.n,
|
|
149
|
+
best_of: this.bestOf,
|
|
150
|
+
logit_bias: this.logitBias,
|
|
151
|
+
stop: this.stop,
|
|
152
|
+
...this.modelKwargs,
|
|
153
|
+
};
|
|
139
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Get the identifyin parameters for the model
|
|
157
|
+
*/
|
|
140
158
|
identifyingParams() {
|
|
141
|
-
return
|
|
159
|
+
return {
|
|
160
|
+
model_name: this.modelName,
|
|
161
|
+
...this.invocationParams(),
|
|
162
|
+
};
|
|
142
163
|
}
|
|
143
|
-
|
|
164
|
+
/**
|
|
165
|
+
* Call out to OpenAI's endpoint with k unique prompts
|
|
166
|
+
*
|
|
167
|
+
* @param prompts - The prompts to pass into the model.
|
|
168
|
+
* @param [stop] - Optional list of stop words to use when generating.
|
|
169
|
+
*
|
|
170
|
+
* @returns The full LLM output.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* import { OpenAI } from "langchain/llms";
|
|
175
|
+
* const openai = new OpenAI();
|
|
176
|
+
* const response = await openai.generate(["Tell me a joke."]);
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
async _generate(prompts, stop) {
|
|
144
180
|
var _a, _b, _c, _d;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
181
|
+
const subPrompts = chunkArray(prompts, this.batchSize);
|
|
182
|
+
const choices = [];
|
|
183
|
+
const tokenUsage = {};
|
|
184
|
+
if (this.stop && stop) {
|
|
185
|
+
throw new Error("Stop found in input and default params");
|
|
186
|
+
}
|
|
187
|
+
const params = this.invocationParams();
|
|
188
|
+
params.stop = stop !== null && stop !== void 0 ? stop : params.stop;
|
|
189
|
+
for (let i = 0; i < subPrompts.length; i += 1) {
|
|
190
|
+
const { data } = await this.completionWithRetry({
|
|
191
|
+
...params,
|
|
192
|
+
prompt: subPrompts[i],
|
|
193
|
+
});
|
|
194
|
+
choices.push(...data.choices);
|
|
195
|
+
const { completion_tokens: completionTokens, prompt_tokens: promptTokens, total_tokens: totalTokens, } = (_a = data.usage) !== null && _a !== void 0 ? _a : {};
|
|
196
|
+
if (completionTokens) {
|
|
197
|
+
tokenUsage.completionTokens =
|
|
198
|
+
((_b = tokenUsage.completionTokens) !== null && _b !== void 0 ? _b : 0) + completionTokens;
|
|
151
199
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
for (let i = 0; i < subPrompts.length; i += 1) {
|
|
155
|
-
const { data } = yield this.completionWithRetry(Object.assign(Object.assign({}, params), { prompt: subPrompts[i] }));
|
|
156
|
-
choices.push(...data.choices);
|
|
157
|
-
const { completion_tokens: completionTokens, prompt_tokens: promptTokens, total_tokens: totalTokens, } = (_a = data.usage) !== null && _a !== void 0 ? _a : {};
|
|
158
|
-
if (completionTokens) {
|
|
159
|
-
tokenUsage.completionTokens =
|
|
160
|
-
((_b = tokenUsage.completionTokens) !== null && _b !== void 0 ? _b : 0) + completionTokens;
|
|
161
|
-
}
|
|
162
|
-
if (promptTokens) {
|
|
163
|
-
tokenUsage.promptTokens = ((_c = tokenUsage.promptTokens) !== null && _c !== void 0 ? _c : 0) + promptTokens;
|
|
164
|
-
}
|
|
165
|
-
if (totalTokens) {
|
|
166
|
-
tokenUsage.totalTokens = ((_d = tokenUsage.totalTokens) !== null && _d !== void 0 ? _d : 0) + totalTokens;
|
|
167
|
-
}
|
|
200
|
+
if (promptTokens) {
|
|
201
|
+
tokenUsage.promptTokens = ((_c = tokenUsage.promptTokens) !== null && _c !== void 0 ? _c : 0) + promptTokens;
|
|
168
202
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
203
|
+
if (totalTokens) {
|
|
204
|
+
tokenUsage.totalTokens = ((_d = tokenUsage.totalTokens) !== null && _d !== void 0 ? _d : 0) + totalTokens;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const generations = chunkArray(choices, this.n).map((promptChoices) => promptChoices.map((choice) => {
|
|
208
|
+
var _a;
|
|
209
|
+
return ({
|
|
210
|
+
text: (_a = choice.text) !== null && _a !== void 0 ? _a : "",
|
|
211
|
+
generationInfo: {
|
|
212
|
+
finishReason: choice.finish_reason,
|
|
213
|
+
logprobs: choice.logprobs,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}));
|
|
217
|
+
return {
|
|
218
|
+
generations,
|
|
219
|
+
llmOutput: { tokenUsage },
|
|
220
|
+
};
|
|
184
221
|
}
|
|
222
|
+
/** @ignore */
|
|
185
223
|
completionWithRetry(request) {
|
|
186
224
|
const makeCompletionRequest = () => this.client.createCompletion(request);
|
|
187
225
|
return backOff(makeCompletionRequest, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../llms/openai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../llms/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { test } from "@jest/globals";
|
|
11
2
|
import { OpenAI } from "../openai";
|
|
12
|
-
test("Test OpenAI", () =>
|
|
3
|
+
test("Test OpenAI", async () => {
|
|
13
4
|
const model = new OpenAI({ maxTokens: 5 });
|
|
14
|
-
const res =
|
|
5
|
+
const res = await model.call("Print hello world");
|
|
15
6
|
console.log({ res });
|
|
16
|
-
})
|
|
7
|
+
});
|
|
17
8
|
//# sourceMappingURL=openai.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.test.js","sourceRoot":"","sources":["../../../../llms/tests/openai.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.test.js","sourceRoot":"","sources":["../../../../llms/tests/openai.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;IAC7B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type InputValues = Record<string, any>;
|
|
2
|
+
export type OutputValues = Record<string, any>;
|
|
3
|
+
export type MemoryVariables = Record<string, any>;
|
|
4
|
+
export declare abstract class BaseMemory {
|
|
5
|
+
abstract loadMemoryVariables(values: InputValues): Promise<MemoryVariables>;
|
|
6
|
+
abstract saveContext(inputValues: InputValues, OutputValues: Promise<OutputValues>): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../memory/base.ts"],"names":[],"mappings":"AAOA,MAAM,OAAgB,UAAU;CAO/B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseMemory, InputValues, MemoryVariables, OutputValues } from "./base";
|
|
2
|
+
export interface BufferMemoryInput {
|
|
3
|
+
humanPrefix: string;
|
|
4
|
+
aiPrefix: string;
|
|
5
|
+
memoryKey: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class BufferMemory extends BaseMemory implements BufferMemoryInput {
|
|
8
|
+
humanPrefix: string;
|
|
9
|
+
aiPrefix: string;
|
|
10
|
+
memoryKey: string;
|
|
11
|
+
buffer: string;
|
|
12
|
+
constructor(fields?: Partial<BufferMemoryInput>);
|
|
13
|
+
loadMemoryVariables(_values: InputValues): Promise<MemoryVariables>;
|
|
14
|
+
saveContext(inputValues: InputValues, outputValues: Promise<OutputValues>): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BaseMemory } from "./base";
|
|
2
|
+
const getInputValue = (inputValues) => {
|
|
3
|
+
const keys = Object.keys(inputValues);
|
|
4
|
+
if (keys.length === 1) {
|
|
5
|
+
return inputValues[keys[0]];
|
|
6
|
+
}
|
|
7
|
+
throw new Error("input values have multiple keys, memory only supported when one key currently");
|
|
8
|
+
};
|
|
9
|
+
export class BufferMemory extends BaseMemory {
|
|
10
|
+
constructor(fields) {
|
|
11
|
+
var _a, _b, _c;
|
|
12
|
+
super();
|
|
13
|
+
Object.defineProperty(this, "humanPrefix", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
value: "Human"
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(this, "aiPrefix", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: "AI"
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(this, "memoryKey", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: "history"
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "buffer", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: ""
|
|
36
|
+
});
|
|
37
|
+
this.humanPrefix = (_a = fields === null || fields === void 0 ? void 0 : fields.humanPrefix) !== null && _a !== void 0 ? _a : this.humanPrefix;
|
|
38
|
+
this.aiPrefix = (_b = fields === null || fields === void 0 ? void 0 : fields.aiPrefix) !== null && _b !== void 0 ? _b : this.aiPrefix;
|
|
39
|
+
this.memoryKey = (_c = fields === null || fields === void 0 ? void 0 : fields.memoryKey) !== null && _c !== void 0 ? _c : this.memoryKey;
|
|
40
|
+
}
|
|
41
|
+
async loadMemoryVariables(_values) {
|
|
42
|
+
const result = { [this.memoryKey]: this.buffer };
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
async saveContext(inputValues, outputValues) {
|
|
46
|
+
const values = await outputValues;
|
|
47
|
+
const human = `${this.humanPrefix}: ${getInputValue(inputValues)}`;
|
|
48
|
+
const ai = `${this.aiPrefix}: ${getInputValue(values)}`;
|
|
49
|
+
const newlines = [human, ai];
|
|
50
|
+
this.buffer += `\n${newlines.join("\n")}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=buffer_memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer_memory.js","sourceRoot":"","sources":["../../../memory/buffer_memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8C,MAAM,QAAQ,CAAC;AAQhF,MAAM,aAAa,GAAG,CAAC,WAAwB,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7B;IACD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,UAAU;IAS1C,YAAY,MAAmC;;QAC7C,KAAK,EAAE,CAAC;QATV;;;;mBAAc,OAAO;WAAC;QAEtB;;;;mBAAW,IAAI;WAAC;QAEhB;;;;mBAAY,SAAS;WAAC;QAEtB;;;;mBAAS,EAAE;WAAC;QAIV,IAAI,CAAC,WAAW,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,mCAAI,IAAI,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,mCAAI,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAoB;QAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,WAAwB,EACxB,YAAmC;QAEnC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { test, expect } from "@jest/globals";
|
|
2
|
+
import { BufferMemory } from "../buffer_memory";
|
|
3
|
+
test("Test buffer memory", async () => {
|
|
4
|
+
const memory = new BufferMemory();
|
|
5
|
+
const result1 = await memory.loadMemoryVariables({});
|
|
6
|
+
expect(result1).toStrictEqual({ history: "" });
|
|
7
|
+
const result = new Promise((resolve, _reject) => {
|
|
8
|
+
resolve({ bar: "foo" });
|
|
9
|
+
});
|
|
10
|
+
await memory.saveContext({ foo: "bar" }, result);
|
|
11
|
+
const expectedString = "\nHuman: bar\nAI: foo";
|
|
12
|
+
const result2 = await memory.loadMemoryVariables({});
|
|
13
|
+
expect(result2).toStrictEqual({ history: expectedString });
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=buffer_memory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer_memory.test.js","sourceRoot":"","sources":["../../../../memory/tests/buffer_memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QAC5D,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,uBAAuB,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC"}
|
|
@@ -3,17 +3,56 @@ import { PromptTemplate, FewShotPromptTemplate } from "./index";
|
|
|
3
3
|
declare const templateClasses: (typeof PromptTemplate | typeof FewShotPromptTemplate)[];
|
|
4
4
|
export type SerializedBasePromptTemplate = ReturnType<InstanceType<(typeof templateClasses)[number]>["serialize"]>;
|
|
5
5
|
export type InputValues = Record<string, any>;
|
|
6
|
+
/**
|
|
7
|
+
* Input common to all prompt templates.
|
|
8
|
+
*/
|
|
6
9
|
export interface BasePromptTemplateInput {
|
|
10
|
+
/**
|
|
11
|
+
* A list of variable names the prompt template expects
|
|
12
|
+
*/
|
|
7
13
|
inputVariables: string[];
|
|
14
|
+
/**
|
|
15
|
+
* How to parse the output of calling an LLM on this formatted prompt
|
|
16
|
+
*/
|
|
8
17
|
outputParser?: BaseOutputParser;
|
|
9
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Base class for prompt templates. Exposes a format method that returns a
|
|
21
|
+
* string prompt given a set of input values.
|
|
22
|
+
* @augments BasePromptTemplateInput
|
|
23
|
+
*/
|
|
10
24
|
export declare abstract class BasePromptTemplate implements BasePromptTemplateInput {
|
|
11
25
|
inputVariables: string[];
|
|
12
26
|
outputParser?: BaseOutputParser;
|
|
13
27
|
constructor(input: BasePromptTemplateInput);
|
|
28
|
+
/**
|
|
29
|
+
* Format the prompt given the input values.
|
|
30
|
+
*
|
|
31
|
+
* @param inputValues - A dictionary of arguments to be passed to the prompt template.
|
|
32
|
+
* @returns A formatted prompt string.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* prompt.format({ foo: "bar" });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
14
39
|
abstract format(values: InputValues): string;
|
|
40
|
+
/**
|
|
41
|
+
* Return the string type key uniquely identifying this class of prompt template.
|
|
42
|
+
*/
|
|
15
43
|
abstract _getPromptType(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Return a json-like object representing this prompt template.
|
|
46
|
+
*/
|
|
16
47
|
abstract serialize(): SerializedBasePromptTemplate;
|
|
48
|
+
/**
|
|
49
|
+
* Load a prompt template from a json-like object describing it.
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* Deserializing needs to be async because templates (e.g. {@link FewShotPromptTemplate}) can
|
|
53
|
+
* reference remote resources that we read asynchronously with a web
|
|
54
|
+
* request.
|
|
55
|
+
*/
|
|
17
56
|
static deserialize(data: SerializedBasePromptTemplate): Promise<BasePromptTemplate>;
|
|
18
57
|
}
|
|
19
58
|
export {};
|
package/dist/esm/prompt/base.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { PromptTemplate, FewShotPromptTemplate } from "./index";
|
|
11
2
|
const templateClasses = [PromptTemplate, FewShotPromptTemplate];
|
|
3
|
+
/**
|
|
4
|
+
* Base class for prompt templates. Exposes a format method that returns a
|
|
5
|
+
* string prompt given a set of input values.
|
|
6
|
+
* @augments BasePromptTemplateInput
|
|
7
|
+
*/
|
|
12
8
|
export class BasePromptTemplate {
|
|
13
9
|
constructor(input) {
|
|
14
10
|
Object.defineProperty(this, "inputVariables", {
|
|
@@ -29,22 +25,25 @@ export class BasePromptTemplate {
|
|
|
29
25
|
}
|
|
30
26
|
Object.assign(this, input);
|
|
31
27
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Load a prompt template from a json-like object describing it.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* Deserializing needs to be async because templates (e.g. {@link FewShotPromptTemplate}) can
|
|
33
|
+
* reference remote resources that we read asynchronously with a web
|
|
34
|
+
* request.
|
|
35
|
+
*/
|
|
36
|
+
static async deserialize(data) {
|
|
37
|
+
switch (data._type) {
|
|
38
|
+
case "prompt":
|
|
39
|
+
return PromptTemplate.deserialize(data);
|
|
40
|
+
case undefined:
|
|
41
|
+
return PromptTemplate.deserialize({ ...data, _type: "prompt" });
|
|
42
|
+
case "few_shot":
|
|
43
|
+
return FewShotPromptTemplate.deserialize(data);
|
|
44
|
+
default:
|
|
45
|
+
throw new Error(`Invalid prompt type in config: ${data._type}`);
|
|
46
|
+
}
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../prompt/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../prompt/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;AAwBhE;;;;GAIG;AACH,MAAM,OAAgB,kBAAkB;IAKtC,YAAY,KAA8B;QAJ1C;;;;;WAAyB;QAEzB;;;;;WAAgC;QAG9B,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QACjC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;SACH;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAyBD;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,IAAkC;QAElC,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,QAAQ;gBACX,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,KAAK,SAAS;gBACZ,OAAO,cAAc,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,KAAK,UAAU;gBACb,OAAO,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACjD;gBACE,MAAM,IAAI,KAAK,CACb,kCACG,IAAqC,CAAC,KACzC,EAAE,CACH,CAAC;SACL;IACH,CAAC;CACF"}
|
|
@@ -19,15 +19,50 @@ export type SerializedFewShotTemplate = {
|
|
|
19
19
|
template_format: TemplateFormat;
|
|
20
20
|
};
|
|
21
21
|
export interface FewShotPromptTemplateInput extends BasePromptTemplateInput {
|
|
22
|
+
/**
|
|
23
|
+
* Examples to format into the prompt. Exactly one of this or
|
|
24
|
+
* {@link exampleSelector} must be
|
|
25
|
+
* provided.
|
|
26
|
+
*/
|
|
22
27
|
examples?: Example[];
|
|
23
|
-
|
|
28
|
+
/**
|
|
29
|
+
* An {@link ExampleSelector} Examples to format into the prompt. Exactly one of this or
|
|
30
|
+
* {@link examples} must be
|
|
31
|
+
* provided.
|
|
32
|
+
*/
|
|
24
33
|
exampleSelector?: ExampleSelector;
|
|
34
|
+
/**
|
|
35
|
+
* An {@link PromptTemplate} used to format a single example.
|
|
36
|
+
*/
|
|
37
|
+
examplePrompt: PromptTemplate;
|
|
38
|
+
/**
|
|
39
|
+
* String separator used to join the prefix, the examples, and suffix.
|
|
40
|
+
*/
|
|
25
41
|
exampleSeparator: string;
|
|
42
|
+
/**
|
|
43
|
+
* A prompt template string to put before the examples.
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue `""`
|
|
46
|
+
*/
|
|
26
47
|
prefix: string;
|
|
48
|
+
/**
|
|
49
|
+
* A prompt template string to put after the examples.
|
|
50
|
+
*/
|
|
27
51
|
suffix: string;
|
|
52
|
+
/**
|
|
53
|
+
* The format of the prompt template. Options are: 'f-string', 'jinja-2'
|
|
54
|
+
*/
|
|
28
55
|
templateFormat: TemplateFormat;
|
|
56
|
+
/**
|
|
57
|
+
* Whether or not to try validating the template on initialization.
|
|
58
|
+
*/
|
|
29
59
|
validateTemplate?: boolean;
|
|
30
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Prompt template that contains few-shot examples.
|
|
63
|
+
* @augments BasePromptTemplate
|
|
64
|
+
* @augments FewShotPromptTemplateInput
|
|
65
|
+
*/
|
|
31
66
|
export declare class FewShotPromptTemplate extends BasePromptTemplate implements FewShotPromptTemplateInput {
|
|
32
67
|
examples?: InputValues[];
|
|
33
68
|
exampleSelector?: ExampleSelector;
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { BasePromptTemplate, } from "./index";
|
|
11
2
|
import { checkValidTemplate, renderTemplate } from "./template";
|
|
12
3
|
import { resolveTemplateFromFile, resolveConfigFromFile, parseFileConfig, } from "../util";
|
|
13
4
|
import { PromptTemplate } from "./prompt";
|
|
14
5
|
import { BaseOutputParser } from "./parser";
|
|
6
|
+
/**
|
|
7
|
+
* Prompt template that contains few-shot examples.
|
|
8
|
+
* @augments BasePromptTemplate
|
|
9
|
+
* @augments FewShotPromptTemplateInput
|
|
10
|
+
*/
|
|
15
11
|
export class FewShotPromptTemplate extends BasePromptTemplate {
|
|
16
12
|
constructor(input) {
|
|
17
13
|
super(input);
|
|
@@ -109,30 +105,28 @@ export class FewShotPromptTemplate extends BasePromptTemplate {
|
|
|
109
105
|
examples: this.examples,
|
|
110
106
|
};
|
|
111
107
|
}
|
|
112
|
-
static deserialize(data) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
templateFormat: data.template_format,
|
|
135
|
-
});
|
|
108
|
+
static async deserialize(data) {
|
|
109
|
+
const serializedPrompt = resolveConfigFromFile("example_prompt", data);
|
|
110
|
+
const examplePrompt = await PromptTemplate.deserialize(serializedPrompt);
|
|
111
|
+
let examples;
|
|
112
|
+
if (typeof data.examples === "string") {
|
|
113
|
+
examples = parseFileConfig(data.examples, [".json", ".yml", ".yaml"]);
|
|
114
|
+
}
|
|
115
|
+
else if (Array.isArray(data.examples)) {
|
|
116
|
+
examples = data.examples;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new Error("Invalid examples format. Only list or string are supported.");
|
|
120
|
+
}
|
|
121
|
+
return new FewShotPromptTemplate({
|
|
122
|
+
inputVariables: data.input_variables,
|
|
123
|
+
outputParser: data.output_parser && BaseOutputParser.deserialize(data.output_parser),
|
|
124
|
+
examplePrompt,
|
|
125
|
+
examples,
|
|
126
|
+
exampleSeparator: data.example_separator,
|
|
127
|
+
prefix: resolveTemplateFromFile("prefix", data),
|
|
128
|
+
suffix: resolveTemplateFromFile("suffix", data),
|
|
129
|
+
templateFormat: data.template_format,
|
|
136
130
|
});
|
|
137
131
|
}
|
|
138
132
|
}
|