langchain 0.0.4 → 0.0.6
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/README.md +33 -0
- package/agents.d.ts +1 -0
- package/agents.js +1 -0
- package/chains.d.ts +1 -0
- package/chains.js +1 -0
- package/dist/agents/agent.d.ts +96 -0
- package/dist/agents/agent.js +151 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/{esm/agents → agents}/executor.d.ts +5 -0
- package/dist/agents/executor.js +99 -0
- package/dist/agents/executor.js.map +1 -0
- package/dist/{cjs/agents → agents}/helpers.d.ts +0 -0
- package/dist/agents/helpers.js +21 -0
- package/dist/agents/helpers.js.map +1 -0
- package/dist/{cjs/agents → agents}/index.d.ts +1 -0
- package/dist/{cjs/agents → agents}/index.js +5 -1
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/initialize.d.ts +4 -0
- package/dist/agents/initialize.js +19 -0
- package/dist/agents/initialize.js.map +1 -0
- package/dist/{cjs/agents → agents}/load.d.ts +0 -0
- package/dist/agents/load.js +19 -0
- package/dist/agents/load.js.map +1 -0
- package/dist/{esm/agents → agents}/mrkl/index.d.ts +18 -1
- package/dist/{cjs/agents → agents}/mrkl/index.js +26 -34
- package/dist/agents/mrkl/index.js.map +1 -0
- package/dist/{cjs/agents → agents}/mrkl/prompt.d.ts +0 -0
- package/dist/{cjs/agents → agents}/mrkl/prompt.js +0 -1
- package/dist/agents/mrkl/prompt.js.map +1 -0
- package/dist/{cjs/agents → agents}/tests/agent.test.d.ts +0 -0
- package/dist/agents/tests/agent.test.js +35 -0
- package/dist/agents/tests/agent.test.js.map +1 -0
- package/dist/{cjs/chains/tests/llm_chain.test.d.ts → agents/tests/calculator.test.d.ts} +0 -0
- package/dist/agents/tests/calculator.test.js +30 -0
- package/dist/agents/tests/calculator.test.js.map +1 -0
- package/dist/agents/tools/base.d.ts +6 -0
- package/dist/agents/tools/base.js +15 -0
- package/dist/agents/tools/base.js.map +1 -0
- package/dist/agents/tools/calculator.d.ts +6 -0
- package/dist/agents/tools/calculator.js +33 -0
- package/dist/agents/tools/calculator.js.map +1 -0
- package/dist/agents/tools/index.d.ts +3 -0
- package/dist/agents/tools/index.js +10 -0
- package/dist/agents/tools/index.js.map +1 -0
- package/dist/{cjs/agents → agents}/tools/llm-math.d.ts +0 -0
- package/dist/{cjs/agents → agents}/tools/llm-math.js +0 -0
- package/dist/{cjs/agents → agents}/tools/llm-math.js.map +1 -1
- package/dist/agents/tools/serpapi.d.ts +18 -0
- package/dist/agents/tools/serpapi.js +93 -0
- package/dist/agents/tools/serpapi.js.map +1 -0
- package/dist/{cjs/agents → agents}/types.d.ts +0 -0
- package/dist/{cjs/agents → agents}/types.js +0 -0
- package/dist/{cjs/agents → agents}/types.js.map +1 -1
- package/dist/{cjs/cache.d.ts → cache.d.ts} +0 -0
- package/dist/{cjs/cache.js → cache.js} +0 -0
- package/dist/cache.js.map +1 -0
- package/dist/chains/base.d.ts +42 -0
- package/dist/chains/base.js +67 -0
- package/dist/chains/base.js.map +1 -0
- package/dist/chains/chat_vector_db_chain.d.ts +41 -0
- package/dist/chains/chat_vector_db_chain.js +146 -0
- package/dist/chains/chat_vector_db_chain.js.map +1 -0
- package/dist/chains/combine_docs_chain.d.ts +35 -0
- package/dist/chains/combine_docs_chain.js +75 -0
- package/dist/chains/combine_docs_chain.js.map +1 -0
- package/dist/chains/conversation.d.ts +12 -0
- package/dist/chains/conversation.js +29 -0
- package/dist/chains/conversation.js.map +1 -0
- package/dist/chains/index.d.ts +7 -0
- package/dist/chains/index.js +19 -0
- package/dist/chains/index.js.map +1 -0
- package/dist/{cjs/chains → chains}/llm_chain.d.ts +36 -1
- package/dist/chains/llm_chain.js +115 -0
- package/dist/chains/llm_chain.js.map +1 -0
- package/dist/chains/load.d.ts +21 -0
- package/dist/chains/load.js +37 -0
- package/dist/chains/load.js.map +1 -0
- package/dist/chains/question_answering/load.d.ts +3 -0
- package/dist/chains/question_answering/load.js +13 -0
- package/dist/chains/question_answering/load.js.map +1 -0
- package/dist/chains/question_answering/stuff_prompts.d.ts +2 -0
- package/dist/chains/question_answering/stuff_prompts.js +10 -0
- package/dist/chains/question_answering/stuff_prompts.js.map +1 -0
- package/dist/{cjs/prompt → chains/question_answering}/tests/load.test.d.ts +0 -0
- package/dist/chains/question_answering/tests/load.test.js +18 -0
- package/dist/chains/question_answering/tests/load.test.js.map +1 -0
- package/dist/{cjs/llms/tests/openai.test.d.ts → chains/tests/chat_vector_db_qa_chain.test.d.ts} +0 -0
- package/dist/chains/tests/chat_vector_db_qa_chain.test.js +35 -0
- package/dist/chains/tests/chat_vector_db_qa_chain.test.js.map +1 -0
- package/dist/{cjs/prompt/tests/template.test.d.ts → chains/tests/combine_docs_chain.test.d.ts} +0 -0
- package/dist/chains/tests/combine_docs_chain.test.js +39 -0
- package/dist/chains/tests/combine_docs_chain.test.js.map +1 -0
- package/dist/{esm/chains → chains}/tests/llm_chain.test.d.ts +0 -0
- package/dist/chains/tests/llm_chain.test.js +29 -0
- package/dist/chains/tests/llm_chain.test.js.map +1 -0
- package/dist/{esm/agents/tests/agent.test.d.ts → chains/tests/vector_db_qa_chain.test.d.ts} +0 -0
- package/dist/chains/tests/vector_db_qa_chain.test.js +46 -0
- package/dist/chains/tests/vector_db_qa_chain.test.js.map +1 -0
- package/dist/chains/vector_db_qa.d.ts +36 -0
- package/dist/chains/vector_db_qa.js +85 -0
- package/dist/chains/vector_db_qa.js.map +1 -0
- package/dist/document.d.ts +13 -0
- package/dist/document.js +28 -0
- package/dist/document.js.map +1 -0
- package/dist/embeddings/base.d.ts +4 -0
- package/dist/embeddings/base.js +7 -0
- package/dist/embeddings/base.js.map +1 -0
- package/dist/embeddings/index.d.ts +1 -0
- package/dist/embeddings/index.js +6 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/openai.d.ts +20 -0
- package/dist/embeddings/openai.js +86 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/{esm/llms → embeddings}/tests/openai.test.d.ts +0 -0
- package/dist/embeddings/tests/openai.test.js +17 -0
- package/dist/embeddings/tests/openai.test.js.map +1 -0
- package/dist/{cjs/index.d.ts → index.d.ts} +1 -1
- package/dist/{cjs/index.js → index.js} +4 -4
- package/dist/index.js.map +1 -0
- package/dist/llms/base.d.ts +64 -0
- package/dist/llms/base.js +164 -0
- package/dist/llms/base.js.map +1 -0
- package/dist/llms/cohere.d.ts +24 -0
- package/dist/llms/cohere.js +55 -0
- package/dist/llms/cohere.js.map +1 -0
- package/dist/{esm/llms → llms}/index.d.ts +20 -0
- package/dist/{cjs/llms → llms}/index.js +3 -1
- package/dist/llms/index.js.map +1 -0
- package/dist/llms/load.d.ts +11 -0
- package/dist/llms/load.js +17 -0
- package/dist/llms/load.js.map +1 -0
- package/dist/llms/openai.d.ts +125 -0
- package/dist/{cjs/llms → llms}/openai.js +96 -58
- package/dist/llms/openai.js.map +1 -0
- package/dist/{esm/prompt/tests/load.test.d.ts → llms/tests/cohere.test.d.ts} +0 -0
- package/dist/llms/tests/cohere.test.js +10 -0
- package/dist/llms/tests/cohere.test.js.map +1 -0
- package/dist/{esm/prompt/tests/template.test.d.ts → llms/tests/openai.test.d.ts} +0 -0
- package/dist/llms/tests/openai.test.js +10 -0
- package/dist/llms/tests/openai.test.js.map +1 -0
- package/dist/memory/base.d.ts +7 -0
- package/dist/memory/base.js +7 -0
- package/dist/memory/base.js.map +1 -0
- package/dist/memory/buffer_memory.d.ts +15 -0
- package/dist/memory/buffer_memory.js +57 -0
- package/dist/memory/buffer_memory.js.map +1 -0
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.js +8 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/tests/buffer_memory.test.d.ts +1 -0
- package/dist/memory/tests/buffer_memory.test.js +17 -0
- package/dist/memory/tests/buffer_memory.test.js.map +1 -0
- package/dist/prompts/base.d.ts +58 -0
- package/dist/prompts/base.js +53 -0
- package/dist/prompts/base.js.map +1 -0
- package/dist/{esm/prompt → prompts}/few_shot.d.ts +36 -1
- package/dist/{cjs/prompt → prompts}/few_shot.js +27 -33
- package/dist/prompts/few_shot.js.map +1 -0
- package/dist/{cjs/prompt → prompts}/index.d.ts +1 -0
- package/dist/{cjs/prompt → prompts}/index.js +3 -1
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/load.d.ts +19 -0
- package/dist/prompts/load.js +33 -0
- package/dist/prompts/load.js.map +1 -0
- package/dist/{cjs/prompt → prompts}/parser.d.ts +30 -0
- package/dist/{cjs/prompt → prompts}/parser.js +21 -0
- package/dist/prompts/parser.js.map +1 -0
- package/dist/prompts/prompt.d.ts +76 -0
- package/dist/{cjs/prompt → prompts}/prompt.js +38 -18
- package/dist/prompts/prompt.js.map +1 -0
- package/dist/{cjs/prompt → prompts}/template.d.ts +0 -0
- package/dist/{cjs/prompt → prompts}/template.js +0 -0
- package/dist/prompts/template.js.map +1 -0
- package/dist/prompts/tests/load.test.d.ts +1 -0
- package/dist/prompts/tests/load.test.js +21 -0
- package/dist/prompts/tests/load.test.js.map +1 -0
- package/dist/prompts/tests/template.test.d.ts +1 -0
- package/dist/{cjs/prompt → prompts}/tests/template.test.js +0 -0
- package/dist/prompts/tests/template.test.js.map +1 -0
- package/dist/text_splitter.d.ts +32 -0
- package/dist/text_splitter.js +167 -0
- package/dist/text_splitter.js.map +1 -0
- package/dist/util/hub.d.ts +2 -0
- package/dist/{cjs/util → util}/hub.js +5 -14
- package/dist/util/hub.js.map +1 -0
- package/dist/{esm/util → util}/index.d.ts +1 -0
- package/dist/{cjs/util → util}/index.js +13 -25
- package/dist/util/index.js.map +1 -0
- package/dist/vectorstores/base.d.ts +18 -0
- package/dist/vectorstores/base.js +38 -0
- package/dist/vectorstores/base.js.map +1 -0
- package/dist/vectorstores/hnswlib.d.ts +19 -0
- package/dist/vectorstores/hnswlib.js +129 -0
- package/dist/vectorstores/hnswlib.js.map +1 -0
- package/dist/vectorstores/index.d.ts +1 -0
- package/dist/vectorstores/index.js +6 -0
- package/dist/vectorstores/index.js.map +1 -0
- package/dist/vectorstores/tests/hnswlib.test.d.ts +1 -0
- package/dist/vectorstores/tests/hnswlib.test.js +44 -0
- package/dist/vectorstores/tests/hnswlib.test.js.map +1 -0
- package/document.d.ts +1 -0
- package/document.js +1 -0
- package/embeddings.d.ts +1 -0
- package/embeddings.js +1 -0
- package/llms.d.ts +1 -0
- package/llms.js +1 -0
- package/memory.d.ts +1 -0
- package/memory.js +1 -0
- package/package.json +53 -44
- package/prompts.d.ts +1 -0
- package/prompts.js +1 -0
- package/text_splitter.d.ts +1 -0
- package/text_splitter.js +1 -0
- package/tools.d.ts +1 -0
- package/tools.js +1 -0
- package/vectorstores.d.ts +1 -0
- package/vectorstores.js +1 -0
- package/dist/cjs/agents/agent.d.ts +0 -42
- package/dist/cjs/agents/agent.js +0 -129
- package/dist/cjs/agents/agent.js.map +0 -1
- package/dist/cjs/agents/executor.d.ts +0 -27
- package/dist/cjs/agents/executor.js +0 -105
- package/dist/cjs/agents/executor.js.map +0 -1
- package/dist/cjs/agents/helpers.js +0 -30
- package/dist/cjs/agents/helpers.js.map +0 -1
- package/dist/cjs/agents/index.js.map +0 -1
- package/dist/cjs/agents/load.js +0 -28
- package/dist/cjs/agents/load.js.map +0 -1
- package/dist/cjs/agents/mrkl/index.d.ts +0 -33
- package/dist/cjs/agents/mrkl/index.js.map +0 -1
- package/dist/cjs/agents/mrkl/prompt.js.map +0 -1
- package/dist/cjs/agents/tests/agent.test.js +0 -31
- package/dist/cjs/agents/tests/agent.test.js.map +0 -1
- package/dist/cjs/agents/tools/index.d.ts +0 -7
- package/dist/cjs/agents/tools/index.js +0 -6
- package/dist/cjs/agents/tools/index.js.map +0 -1
- package/dist/cjs/agents/tools/serpapi.d.ts +0 -3
- package/dist/cjs/agents/tools/serpapi.js +0 -50
- package/dist/cjs/agents/tools/serpapi.js.map +0 -1
- package/dist/cjs/cache.js.map +0 -1
- package/dist/cjs/chains/base.d.ts +0 -12
- package/dist/cjs/chains/base.js +0 -23
- package/dist/cjs/chains/base.js.map +0 -1
- package/dist/cjs/chains/index.d.ts +0 -3
- package/dist/cjs/chains/index.js +0 -10
- package/dist/cjs/chains/index.js.map +0 -1
- package/dist/cjs/chains/llm_chain.js +0 -83
- package/dist/cjs/chains/llm_chain.js.map +0 -1
- package/dist/cjs/chains/llm_math_chain.d.ts +0 -0
- package/dist/cjs/chains/llm_math_chain.js +0 -129
- package/dist/cjs/chains/llm_math_chain.js.map +0 -1
- package/dist/cjs/chains/load.d.ts +0 -2
- package/dist/cjs/chains/load.js +0 -29
- package/dist/cjs/chains/load.js.map +0 -1
- package/dist/cjs/chains/tests/llm_chain.test.js +0 -32
- package/dist/cjs/chains/tests/llm_chain.test.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/llms/base.d.ts +0 -23
- package/dist/cjs/llms/base.js +0 -159
- package/dist/cjs/llms/base.js.map +0 -1
- package/dist/cjs/llms/index.d.ts +0 -18
- package/dist/cjs/llms/index.js.map +0 -1
- package/dist/cjs/llms/load.d.ts +0 -3
- package/dist/cjs/llms/load.js +0 -9
- package/dist/cjs/llms/load.js.map +0 -1
- package/dist/cjs/llms/openai.d.ts +0 -63
- package/dist/cjs/llms/openai.js.map +0 -1
- package/dist/cjs/llms/tests/openai.test.js +0 -19
- package/dist/cjs/llms/tests/openai.test.js.map +0 -1
- package/dist/cjs/prompt/base.d.ts +0 -19
- package/dist/cjs/prompt/base.js +0 -54
- package/dist/cjs/prompt/base.js.map +0 -1
- package/dist/cjs/prompt/few_shot.d.ts +0 -47
- package/dist/cjs/prompt/few_shot.js.map +0 -1
- package/dist/cjs/prompt/index.js.map +0 -1
- package/dist/cjs/prompt/load.d.ts +0 -2
- package/dist/cjs/prompt/load.js +0 -25
- package/dist/cjs/prompt/load.js.map +0 -1
- package/dist/cjs/prompt/parser.js.map +0 -1
- package/dist/cjs/prompt/prompt.d.ts +0 -28
- package/dist/cjs/prompt/prompt.js.map +0 -1
- package/dist/cjs/prompt/template.js.map +0 -1
- package/dist/cjs/prompt/tests/load.test.js +0 -30
- package/dist/cjs/prompt/tests/load.test.js.map +0 -1
- package/dist/cjs/prompt/tests/template.test.js.map +0 -1
- package/dist/cjs/util/hub.d.ts +0 -1
- package/dist/cjs/util/hub.js.map +0 -1
- package/dist/cjs/util/index.d.ts +0 -12
- package/dist/cjs/util/index.js.map +0 -1
- package/dist/esm/agents/agent.d.ts +0 -42
- package/dist/esm/agents/agent.js +0 -124
- package/dist/esm/agents/agent.js.map +0 -1
- package/dist/esm/agents/executor.js +0 -101
- package/dist/esm/agents/executor.js.map +0 -1
- package/dist/esm/agents/helpers.d.ts +0 -3
- package/dist/esm/agents/helpers.js +0 -26
- package/dist/esm/agents/helpers.js.map +0 -1
- package/dist/esm/agents/index.d.ts +0 -6
- package/dist/esm/agents/index.js +0 -5
- package/dist/esm/agents/index.js.map +0 -1
- package/dist/esm/agents/load.d.ts +0 -6
- package/dist/esm/agents/load.js +0 -24
- package/dist/esm/agents/load.js.map +0 -1
- package/dist/esm/agents/mrkl/index.js +0 -106
- package/dist/esm/agents/mrkl/index.js.map +0 -1
- package/dist/esm/agents/mrkl/prompt.d.ts +0 -3
- package/dist/esm/agents/mrkl/prompt.js +0 -17
- package/dist/esm/agents/mrkl/prompt.js.map +0 -1
- package/dist/esm/agents/tests/agent.test.js +0 -29
- package/dist/esm/agents/tests/agent.test.js.map +0 -1
- package/dist/esm/agents/tools/index.d.ts +0 -7
- package/dist/esm/agents/tools/index.js +0 -2
- package/dist/esm/agents/tools/index.js.map +0 -1
- package/dist/esm/agents/tools/llm-math.d.ts +0 -0
- package/dist/esm/agents/tools/llm-math.js +0 -2
- package/dist/esm/agents/tools/llm-math.js.map +0 -1
- package/dist/esm/agents/tools/serpapi.d.ts +0 -3
- package/dist/esm/agents/tools/serpapi.js +0 -46
- package/dist/esm/agents/tools/serpapi.js.map +0 -1
- package/dist/esm/agents/types.d.ts +0 -25
- package/dist/esm/agents/types.js +0 -2
- package/dist/esm/agents/types.js.map +0 -1
- package/dist/esm/cache.d.ts +0 -11
- package/dist/esm/cache.js +0 -22
- package/dist/esm/cache.js.map +0 -1
- package/dist/esm/chains/base.d.ts +0 -12
- package/dist/esm/chains/base.js +0 -19
- package/dist/esm/chains/base.js.map +0 -1
- package/dist/esm/chains/index.d.ts +0 -3
- package/dist/esm/chains/index.js +0 -4
- package/dist/esm/chains/index.js.map +0 -1
- package/dist/esm/chains/llm_chain.d.ts +0 -30
- package/dist/esm/chains/llm_chain.js +0 -79
- package/dist/esm/chains/llm_chain.js.map +0 -1
- package/dist/esm/chains/llm_math_chain.d.ts +0 -0
- package/dist/esm/chains/llm_math_chain.js +0 -129
- package/dist/esm/chains/llm_math_chain.js.map +0 -1
- package/dist/esm/chains/load.d.ts +0 -2
- package/dist/esm/chains/load.js +0 -25
- package/dist/esm/chains/load.js.map +0 -1
- package/dist/esm/chains/tests/llm_chain.test.js +0 -30
- package/dist/esm/chains/tests/llm_chain.test.js.map +0 -1
- package/dist/esm/index.d.ts +0 -3
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/llms/base.d.ts +0 -23
- package/dist/esm/llms/base.js +0 -154
- package/dist/esm/llms/base.js.map +0 -1
- package/dist/esm/llms/index.js +0 -4
- package/dist/esm/llms/index.js.map +0 -1
- package/dist/esm/llms/load.d.ts +0 -3
- package/dist/esm/llms/load.js +0 -5
- package/dist/esm/llms/load.js.map +0 -1
- package/dist/esm/llms/openai.d.ts +0 -63
- package/dist/esm/llms/openai.js +0 -198
- package/dist/esm/llms/openai.js.map +0 -1
- package/dist/esm/llms/tests/openai.test.js +0 -17
- package/dist/esm/llms/tests/openai.test.js.map +0 -1
- package/dist/esm/prompt/base.d.ts +0 -19
- package/dist/esm/prompt/base.js +0 -50
- package/dist/esm/prompt/base.js.map +0 -1
- package/dist/esm/prompt/few_shot.js +0 -139
- package/dist/esm/prompt/few_shot.js.map +0 -1
- package/dist/esm/prompt/index.d.ts +0 -3
- package/dist/esm/prompt/index.js +0 -4
- package/dist/esm/prompt/index.js.map +0 -1
- package/dist/esm/prompt/load.d.ts +0 -2
- package/dist/esm/prompt/load.js +0 -21
- package/dist/esm/prompt/load.js.map +0 -1
- package/dist/esm/prompt/parser.d.ts +0 -40
- package/dist/esm/prompt/parser.js +0 -86
- package/dist/esm/prompt/parser.js.map +0 -1
- package/dist/esm/prompt/prompt.d.ts +0 -28
- package/dist/esm/prompt/prompt.js +0 -87
- package/dist/esm/prompt/prompt.js.map +0 -1
- package/dist/esm/prompt/template.d.ts +0 -16
- package/dist/esm/prompt/template.js +0 -80
- package/dist/esm/prompt/template.js.map +0 -1
- package/dist/esm/prompt/tests/load.test.js +0 -25
- package/dist/esm/prompt/tests/load.test.js.map +0 -1
- package/dist/esm/prompt/tests/template.test.js +0 -25
- package/dist/esm/prompt/tests/template.test.js.map +0 -1
- package/dist/esm/util/hub.d.ts +0 -1
- package/dist/esm/util/hub.js +0 -43
- package/dist/esm/util/hub.js.map +0 -1
- package/dist/esm/util/index.js +0 -74
- package/dist/esm/util/index.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 🦜️🔗 LangChain.js
|
|
2
|
+
|
|
3
|
+
⚡ Building applications with LLMs through composability ⚡
|
|
4
|
+
|
|
5
|
+
**Production Support:** As you move your LangChains into production, we'd love to offer more comprehensive support.
|
|
6
|
+
Please fill out [this form](https://forms.gle/57d8AmXBYp8PP8tZA) and we'll set up a dedicated support Slack channel.
|
|
7
|
+
|
|
8
|
+
## Quick Install
|
|
9
|
+
|
|
10
|
+
`yarn add langchain`
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { OpenAI } from 'langchain/llms';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 🤔 What is this?
|
|
17
|
+
|
|
18
|
+
Large language models (LLMs) are emerging as a transformative technology, enabling
|
|
19
|
+
developers to build applications that they previously could not.
|
|
20
|
+
But using these LLMs in isolation is often not enough to
|
|
21
|
+
create a truly powerful app - the real power comes when you can combine them with other sources of computation or knowledge.
|
|
22
|
+
|
|
23
|
+
This library is aimed at assisting in the development of those types of applications.
|
|
24
|
+
|
|
25
|
+
## Relationship with Python LangChain
|
|
26
|
+
|
|
27
|
+
This is built to integrate as seamlessly as possible with the [LangChain Python package](https://github.com/hwchase17/langchain). Specifically, this means all objects (prompts, LLMs, chains, etc) are designed in a way where they can be serialized and shared between languages.
|
|
28
|
+
|
|
29
|
+
The [LangChainHub](https://github.com/hwchase17/langchain-hub) is a central place for the serialized versions of these prompts, chains, and agents.
|
|
30
|
+
|
|
31
|
+
## 📖 Documentation
|
|
32
|
+
|
|
33
|
+
For full documentation of prompts, chains, agents and more, please see [here](https://hwchase17.github.io/langchainjs/docs/overview).
|
package/agents.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/agents'
|
package/agents.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/agents')
|
package/chains.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/chains'
|
package/chains.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/chains')
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { ChainValues } from "../chains";
|
|
2
|
+
import { SerializedZeroShotAgent, AgentAction, AgentFinish, AgentStep, StoppingMethod, Tool } from "./index";
|
|
3
|
+
import { BaseLLM } from "../llms";
|
|
4
|
+
import { LLMChain } from "../chains/llm_chain";
|
|
5
|
+
import { BasePromptTemplate } from "../prompts";
|
|
6
|
+
export interface StaticAgent {
|
|
7
|
+
/**
|
|
8
|
+
* Create a prompt for this class
|
|
9
|
+
*
|
|
10
|
+
* @param tools - List of tools the agent will have access to, used to format the prompt.
|
|
11
|
+
* @param fields - Additional fields used to format the prompt.
|
|
12
|
+
*
|
|
13
|
+
* @returns A PromptTemplate assembled from the given tools and fields.
|
|
14
|
+
* */
|
|
15
|
+
createPrompt(tools: Tool[], fields?: Record<string, any>): BasePromptTemplate;
|
|
16
|
+
/** Construct an agent from an LLM and a list of tools */
|
|
17
|
+
fromLLMAndTools(llm: BaseLLM, tools: Tool[], args?: Record<string, any>): Agent;
|
|
18
|
+
validateTools(_: Tool[]): void;
|
|
19
|
+
}
|
|
20
|
+
export declare const staticImplements: <T>(_: T) => void;
|
|
21
|
+
type SerializedAgent = SerializedZeroShotAgent;
|
|
22
|
+
export interface AgentInput {
|
|
23
|
+
llmChain: LLMChain;
|
|
24
|
+
allowedTools?: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Class responsible for calling a language model and deciding an action.
|
|
28
|
+
*
|
|
29
|
+
* @remarks This is driven by an LLMChain. The prompt in the LLMChain *must*
|
|
30
|
+
* include a variable called "agent_scratchpad" where the agent can put its
|
|
31
|
+
* intermediary work.
|
|
32
|
+
*/
|
|
33
|
+
export declare abstract class Agent {
|
|
34
|
+
llmChain: LLMChain;
|
|
35
|
+
allowedTools?: string[];
|
|
36
|
+
returnValues: string[];
|
|
37
|
+
constructor(input: AgentInput);
|
|
38
|
+
/**
|
|
39
|
+
* Extract tool and tool input from LLM output.
|
|
40
|
+
*/
|
|
41
|
+
abstract extractToolAndInput(input: string): {
|
|
42
|
+
tool: string;
|
|
43
|
+
input: string;
|
|
44
|
+
} | null;
|
|
45
|
+
/**
|
|
46
|
+
* Prefix to append the observation with.
|
|
47
|
+
*/
|
|
48
|
+
abstract observationPrefix(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Prefix to append the LLM call with.
|
|
51
|
+
*/
|
|
52
|
+
abstract llmPrefix(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Return the string type key uniquely identifying this class of agent.
|
|
55
|
+
*/
|
|
56
|
+
abstract _agentType(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Prepare the agent for a new call, if needed
|
|
59
|
+
*/
|
|
60
|
+
prepareForNewCall(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Validate that appropriate tools are passed in
|
|
63
|
+
*/
|
|
64
|
+
static validateTools(_: Tool[]): void;
|
|
65
|
+
_stop(): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Name of tool to use to terminate the chain.
|
|
68
|
+
*/
|
|
69
|
+
finishToolName(): string;
|
|
70
|
+
/**
|
|
71
|
+
* Construct a scratchpad to let the agent continue its thought process
|
|
72
|
+
*/
|
|
73
|
+
private constructScratchPad;
|
|
74
|
+
private _plan;
|
|
75
|
+
/**
|
|
76
|
+
* Decide what to do given some input.
|
|
77
|
+
*
|
|
78
|
+
* @param steps - Steps the LLM has taken so far, along with observations from each.
|
|
79
|
+
* @param inputs - User inputs.
|
|
80
|
+
*
|
|
81
|
+
* @returns Action specifying what tool to use.
|
|
82
|
+
*/
|
|
83
|
+
plan(steps: AgentStep[], inputs: ChainValues): Promise<AgentAction | AgentFinish>;
|
|
84
|
+
/**
|
|
85
|
+
* Return response when agent has been stopped due to max iterations
|
|
86
|
+
*/
|
|
87
|
+
returnStoppedResponse(earlyStoppingMethod: StoppingMethod, steps: AgentStep[], inputs: ChainValues): Promise<AgentFinish>;
|
|
88
|
+
/**
|
|
89
|
+
* Load an agent from a json-like object describing it.
|
|
90
|
+
*/
|
|
91
|
+
static deserialize(data: SerializedAgent & {
|
|
92
|
+
llm?: BaseLLM;
|
|
93
|
+
tools?: Tool[];
|
|
94
|
+
}): Promise<Agent>;
|
|
95
|
+
}
|
|
96
|
+
export {};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Agent = exports.staticImplements = void 0;
|
|
4
|
+
const index_1 = require("./index");
|
|
5
|
+
class ParseError extends Error {
|
|
6
|
+
constructor(msg, output) {
|
|
7
|
+
super(msg);
|
|
8
|
+
Object.defineProperty(this, "output", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
configurable: true,
|
|
11
|
+
writable: true,
|
|
12
|
+
value: void 0
|
|
13
|
+
});
|
|
14
|
+
this.output = output;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const staticImplements = (_) => { };
|
|
18
|
+
exports.staticImplements = staticImplements;
|
|
19
|
+
/**
|
|
20
|
+
* Class responsible for calling a language model and deciding an action.
|
|
21
|
+
*
|
|
22
|
+
* @remarks This is driven by an LLMChain. The prompt in the LLMChain *must*
|
|
23
|
+
* include a variable called "agent_scratchpad" where the agent can put its
|
|
24
|
+
* intermediary work.
|
|
25
|
+
*/
|
|
26
|
+
class Agent {
|
|
27
|
+
constructor(input) {
|
|
28
|
+
Object.defineProperty(this, "llmChain", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
configurable: true,
|
|
31
|
+
writable: true,
|
|
32
|
+
value: void 0
|
|
33
|
+
});
|
|
34
|
+
Object.defineProperty(this, "allowedTools", {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
configurable: true,
|
|
37
|
+
writable: true,
|
|
38
|
+
value: undefined
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(this, "returnValues", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
writable: true,
|
|
44
|
+
value: ["output"]
|
|
45
|
+
});
|
|
46
|
+
this.llmChain = input.llmChain;
|
|
47
|
+
this.allowedTools = input.allowedTools;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Prepare the agent for a new call, if needed
|
|
51
|
+
*/
|
|
52
|
+
prepareForNewCall() { }
|
|
53
|
+
/**
|
|
54
|
+
* Validate that appropriate tools are passed in
|
|
55
|
+
*/
|
|
56
|
+
// eslint-disable-next-line no-unused-vars
|
|
57
|
+
static validateTools(_) { }
|
|
58
|
+
_stop() {
|
|
59
|
+
return [`\n${this.observationPrefix()}`];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Name of tool to use to terminate the chain.
|
|
63
|
+
*/
|
|
64
|
+
finishToolName() {
|
|
65
|
+
return "Final Answer";
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Construct a scratchpad to let the agent continue its thought process
|
|
69
|
+
*/
|
|
70
|
+
constructScratchPad(steps) {
|
|
71
|
+
return steps.reduce((thoughts, { action, observation }) => thoughts +
|
|
72
|
+
[
|
|
73
|
+
action.log,
|
|
74
|
+
`${this.observationPrefix()}${observation}`,
|
|
75
|
+
this.llmPrefix(),
|
|
76
|
+
].join("\n"), "");
|
|
77
|
+
}
|
|
78
|
+
async _plan(steps, inputs, suffix) {
|
|
79
|
+
const thoughts = this.constructScratchPad(steps);
|
|
80
|
+
const newInputs = {
|
|
81
|
+
...inputs,
|
|
82
|
+
agent_scratchpad: suffix ? `${thoughts}${suffix}` : thoughts,
|
|
83
|
+
stop: this._stop(),
|
|
84
|
+
};
|
|
85
|
+
const output = await this.llmChain.predict(newInputs);
|
|
86
|
+
const parsed = this.extractToolAndInput(output);
|
|
87
|
+
if (!parsed) {
|
|
88
|
+
throw new ParseError(`Invalid output: ${output}`, output);
|
|
89
|
+
}
|
|
90
|
+
const action = {
|
|
91
|
+
tool: parsed.tool,
|
|
92
|
+
toolInput: parsed.input,
|
|
93
|
+
log: output,
|
|
94
|
+
};
|
|
95
|
+
if (action.tool === this.finishToolName()) {
|
|
96
|
+
return { returnValues: { output: action.toolInput }, log: action.log };
|
|
97
|
+
}
|
|
98
|
+
return action;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Decide what to do given some input.
|
|
102
|
+
*
|
|
103
|
+
* @param steps - Steps the LLM has taken so far, along with observations from each.
|
|
104
|
+
* @param inputs - User inputs.
|
|
105
|
+
*
|
|
106
|
+
* @returns Action specifying what tool to use.
|
|
107
|
+
*/
|
|
108
|
+
plan(steps, inputs) {
|
|
109
|
+
return this._plan(steps, inputs);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Return response when agent has been stopped due to max iterations
|
|
113
|
+
*/
|
|
114
|
+
async returnStoppedResponse(earlyStoppingMethod, steps, inputs) {
|
|
115
|
+
if (earlyStoppingMethod === "force") {
|
|
116
|
+
return {
|
|
117
|
+
returnValues: { output: "Agent stopped due to max iterations." },
|
|
118
|
+
log: "",
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (earlyStoppingMethod === "generate") {
|
|
122
|
+
try {
|
|
123
|
+
const action = await this._plan(steps, inputs, "\n\nI now need to return a final answer based on the previous steps:");
|
|
124
|
+
if ("returnValues" in action) {
|
|
125
|
+
return action;
|
|
126
|
+
}
|
|
127
|
+
return { returnValues: { output: action.log }, log: action.log };
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
if (!(err instanceof ParseError)) {
|
|
131
|
+
throw err;
|
|
132
|
+
}
|
|
133
|
+
return { returnValues: { output: err.output }, log: err.output };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
throw new Error(`Invalid stopping method: ${earlyStoppingMethod}`);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Load an agent from a json-like object describing it.
|
|
140
|
+
*/
|
|
141
|
+
static async deserialize(data) {
|
|
142
|
+
switch (data._type) {
|
|
143
|
+
case "zero-shot-react-description":
|
|
144
|
+
return index_1.ZeroShotAgent.deserialize(data);
|
|
145
|
+
default:
|
|
146
|
+
throw new Error("Unknown agent type");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.Agent = Agent;
|
|
151
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../agents/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,10 @@ type AgentExecutorInput = {
|
|
|
8
8
|
maxIterations?: number;
|
|
9
9
|
earlyStoppingMethod?: StoppingMethod;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* A chain managing an agent using tools.
|
|
13
|
+
* @augments BaseChain
|
|
14
|
+
*/
|
|
11
15
|
export declare class AgentExecutor extends BaseChain {
|
|
12
16
|
agent: Agent;
|
|
13
17
|
tools: Tool[];
|
|
@@ -15,6 +19,7 @@ export declare class AgentExecutor extends BaseChain {
|
|
|
15
19
|
maxIterations?: number;
|
|
16
20
|
earlyStoppingMethod: StoppingMethod;
|
|
17
21
|
constructor(input: AgentExecutorInput);
|
|
22
|
+
/** Create from agent and a list of tools. */
|
|
18
23
|
static fromAgentAndTools(fields: {
|
|
19
24
|
agent: Agent;
|
|
20
25
|
tools: Tool[];
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgentExecutor = void 0;
|
|
4
|
+
const chains_1 = require("../chains");
|
|
5
|
+
/**
|
|
6
|
+
* A chain managing an agent using tools.
|
|
7
|
+
* @augments BaseChain
|
|
8
|
+
*/
|
|
9
|
+
class AgentExecutor extends chains_1.BaseChain {
|
|
10
|
+
constructor(input) {
|
|
11
|
+
var _a, _b, _c;
|
|
12
|
+
super();
|
|
13
|
+
Object.defineProperty(this, "agent", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
value: void 0
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(this, "tools", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: void 0
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(this, "returnIntermediateSteps", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: false
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "maxIterations", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: 15
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(this, "earlyStoppingMethod", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: "force"
|
|
42
|
+
});
|
|
43
|
+
this.agent = input.agent;
|
|
44
|
+
this.tools = input.tools;
|
|
45
|
+
this.returnIntermediateSteps =
|
|
46
|
+
(_a = input.returnIntermediateSteps) !== null && _a !== void 0 ? _a : this.returnIntermediateSteps;
|
|
47
|
+
this.maxIterations = (_b = input.maxIterations) !== null && _b !== void 0 ? _b : this.maxIterations;
|
|
48
|
+
this.earlyStoppingMethod =
|
|
49
|
+
(_c = input.earlyStoppingMethod) !== null && _c !== void 0 ? _c : this.earlyStoppingMethod;
|
|
50
|
+
}
|
|
51
|
+
/** Create from agent and a list of tools. */
|
|
52
|
+
static fromAgentAndTools(fields) {
|
|
53
|
+
return new AgentExecutor(fields);
|
|
54
|
+
}
|
|
55
|
+
shouldContinue(iterations) {
|
|
56
|
+
return this.maxIterations === undefined || iterations < this.maxIterations;
|
|
57
|
+
}
|
|
58
|
+
async _call(inputs) {
|
|
59
|
+
this.agent.prepareForNewCall();
|
|
60
|
+
const toolsByName = Object.fromEntries(this.tools.map((t) => [t.name.toLowerCase(), t]));
|
|
61
|
+
const steps = [];
|
|
62
|
+
let iterations = 0;
|
|
63
|
+
const getOutput = (finishStep) => {
|
|
64
|
+
const { returnValues } = finishStep;
|
|
65
|
+
if (this.returnIntermediateSteps) {
|
|
66
|
+
return { ...returnValues, intermediateSteps: steps };
|
|
67
|
+
}
|
|
68
|
+
return returnValues;
|
|
69
|
+
};
|
|
70
|
+
while (this.shouldContinue(iterations)) {
|
|
71
|
+
const action = await this.agent.plan(steps, inputs);
|
|
72
|
+
if ("returnValues" in action) {
|
|
73
|
+
return getOutput(action);
|
|
74
|
+
}
|
|
75
|
+
const tool = toolsByName[action.tool.toLowerCase()];
|
|
76
|
+
const observation = tool
|
|
77
|
+
? await tool.call(action.toolInput)
|
|
78
|
+
: `${action.tool} is not a valid tool, try another one.`;
|
|
79
|
+
steps.push({ action, observation });
|
|
80
|
+
if (tool === null || tool === void 0 ? void 0 : tool.returnDirect) {
|
|
81
|
+
return getOutput({
|
|
82
|
+
returnValues: { [this.agent.returnValues[0]]: observation },
|
|
83
|
+
log: "",
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
iterations += 1;
|
|
87
|
+
}
|
|
88
|
+
const finish = await this.agent.returnStoppedResponse(this.earlyStoppingMethod, steps, inputs);
|
|
89
|
+
return getOutput(finish);
|
|
90
|
+
}
|
|
91
|
+
_chainType() {
|
|
92
|
+
return "agent_executor";
|
|
93
|
+
}
|
|
94
|
+
serialize() {
|
|
95
|
+
throw new Error("Cannot serialize an AgentExecutor");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.AgentExecutor = AgentExecutor;
|
|
99
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../agents/executor.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deserializeHelper = void 0;
|
|
4
|
+
const chains_1 = require("../chains");
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const deserializeHelper = async (llm, tools, data, fromLLMAndTools, fromConstructor) => {
|
|
7
|
+
if (data.load_from_llm_and_tools) {
|
|
8
|
+
if (!llm) {
|
|
9
|
+
throw new Error("Loading from llm and tools, llm must be provided.");
|
|
10
|
+
}
|
|
11
|
+
if (!tools) {
|
|
12
|
+
throw new Error("Loading from llm and tools, tools must be provided.");
|
|
13
|
+
}
|
|
14
|
+
return fromLLMAndTools(llm, tools, data);
|
|
15
|
+
}
|
|
16
|
+
const serializedLLMChain = (0, util_1.resolveConfigFromFile)("llm_chain", data);
|
|
17
|
+
const llmChain = await chains_1.LLMChain.deserialize(serializedLLMChain);
|
|
18
|
+
return fromConstructor({ ...data, llmChain });
|
|
19
|
+
};
|
|
20
|
+
exports.deserializeHelper = deserializeHelper;
|
|
21
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../agents/helpers.ts"],"names":[],"mappings":";;;AAEA,sCAAyD;AACzD,kCAAgD;AAEzC,MAAM,iBAAiB,GAAG,KAAK,EAMpC,GAAwB,EACxB,KAAyB,EACzB,IAA+B,EAC/B,eAA4D,EAC5D,eAA+B,EACnB,EAAE;IACd,IAAI,IAAI,CAAC,uBAAuB,EAAE;QAChC,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACxE;QAED,OAAO,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;KAC1C;IAED,MAAM,kBAAkB,GAAG,IAAA,4BAAqB,EAG9C,WAAW,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,QAAQ,GAAG,MAAM,iBAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChE,OAAO,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC;AA9BW,QAAA,iBAAiB,qBA8B5B"}
|
|
@@ -3,4 +3,5 @@ export { Agent, StaticAgent, staticImplements, AgentInput } from "./agent";
|
|
|
3
3
|
export { AgentExecutor } from "./executor";
|
|
4
4
|
export { ZeroShotAgent, SerializedZeroShotAgent } from "./mrkl";
|
|
5
5
|
export { Tool } from "./tools";
|
|
6
|
+
export { initializeAgentExecutor } from "./initialize";
|
|
6
7
|
export { loadAgent } from "./load";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadAgent = exports.ZeroShotAgent = exports.AgentExecutor = exports.staticImplements = exports.Agent = void 0;
|
|
3
|
+
exports.loadAgent = exports.initializeAgentExecutor = exports.Tool = exports.ZeroShotAgent = exports.AgentExecutor = exports.staticImplements = exports.Agent = void 0;
|
|
4
4
|
var agent_1 = require("./agent");
|
|
5
5
|
Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
|
|
6
6
|
Object.defineProperty(exports, "staticImplements", { enumerable: true, get: function () { return agent_1.staticImplements; } });
|
|
@@ -8,6 +8,10 @@ var executor_1 = require("./executor");
|
|
|
8
8
|
Object.defineProperty(exports, "AgentExecutor", { enumerable: true, get: function () { return executor_1.AgentExecutor; } });
|
|
9
9
|
var mrkl_1 = require("./mrkl");
|
|
10
10
|
Object.defineProperty(exports, "ZeroShotAgent", { enumerable: true, get: function () { return mrkl_1.ZeroShotAgent; } });
|
|
11
|
+
var tools_1 = require("./tools");
|
|
12
|
+
Object.defineProperty(exports, "Tool", { enumerable: true, get: function () { return tools_1.Tool; } });
|
|
13
|
+
var initialize_1 = require("./initialize");
|
|
14
|
+
Object.defineProperty(exports, "initializeAgentExecutor", { enumerable: true, get: function () { return initialize_1.initializeAgentExecutor; } });
|
|
11
15
|
var load_1 = require("./load");
|
|
12
16
|
Object.defineProperty(exports, "loadAgent", { enumerable: true, get: function () { return load_1.loadAgent; } });
|
|
13
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../agents/index.ts"],"names":[],"mappings":";;;AAOA,iCAA2E;AAAlE,8FAAA,KAAK,OAAA;AAAe,yGAAA,gBAAgB,OAAA;AAC7C,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,+BAAgE;AAAvD,qGAAA,aAAa,OAAA;AACtB,iCAA+B;AAAtB,6FAAA,IAAI,OAAA;AACb,2CAAuD;AAA9C,qHAAA,uBAAuB,OAAA;AAEhC,+BAAmC;AAA1B,iGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initializeAgentExecutor = void 0;
|
|
4
|
+
const executor_1 = require("./executor");
|
|
5
|
+
const mrkl_1 = require("./mrkl");
|
|
6
|
+
const initializeAgentExecutor = async (tools, llm, agentType = "zero-shot-react-description") => {
|
|
7
|
+
switch (agentType) {
|
|
8
|
+
case "zero-shot-react-description":
|
|
9
|
+
return executor_1.AgentExecutor.fromAgentAndTools({
|
|
10
|
+
agent: mrkl_1.ZeroShotAgent.fromLLMAndTools(llm, tools),
|
|
11
|
+
tools,
|
|
12
|
+
returnIntermediateSteps: true,
|
|
13
|
+
});
|
|
14
|
+
default:
|
|
15
|
+
throw new Error("Unknown agent type");
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
exports.initializeAgentExecutor = initializeAgentExecutor;
|
|
19
|
+
//# sourceMappingURL=initialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../agents/initialize.ts"],"names":[],"mappings":";;;AAEA,yCAA2C;AAC3C,iCAAuC;AAEhC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,KAAa,EACb,GAAY,EACZ,SAAS,GAAG,6BAA6B,EACjB,EAAE;IAC1B,QAAQ,SAAS,EAAE;QACjB,KAAK,6BAA6B;YAChC,OAAO,wBAAa,CAAC,iBAAiB,CAAC;gBACrC,KAAK,EAAE,oBAAa,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;gBAChD,KAAK;gBACL,uBAAuB,EAAE,IAAI;aAC9B,CAAC,CAAC;QACL;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACzC;AACH,CAAC,CAAC;AAfW,QAAA,uBAAuB,2BAelC"}
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadAgent = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const hub_1 = require("../util/hub");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
const loadAgentFromFile = async (file, llmAndTools) => {
|
|
8
|
+
const serialized = (0, util_1.parseFileConfig)(file);
|
|
9
|
+
return _1.Agent.deserialize({ ...serialized, ...llmAndTools });
|
|
10
|
+
};
|
|
11
|
+
const loadAgent = async (uri, llmAndTools) => {
|
|
12
|
+
const hubResult = await (0, hub_1.loadFromHub)(uri, (u) => loadAgentFromFile(u, llmAndTools), "agents", new Set(["json", "yaml"]));
|
|
13
|
+
if (hubResult) {
|
|
14
|
+
return hubResult;
|
|
15
|
+
}
|
|
16
|
+
return loadAgentFromFile(uri, llmAndTools);
|
|
17
|
+
};
|
|
18
|
+
exports.loadAgent = loadAgent;
|
|
19
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../agents/load.ts"],"names":[],"mappings":";;;AAAA,wBAAgC;AAEhC,qCAA0C;AAC1C,kCAA0C;AAE1C,MAAM,iBAAiB,GAAG,KAAK,EAC7B,IAAY,EACZ,WAA+C,EAC/C,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC;IACzC,OAAO,QAAK,CAAC,WAAW,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEK,MAAM,SAAS,GAAG,KAAK,EAC5B,GAAW,EACX,WAA+C,EAC/B,EAAE;IAClB,MAAM,SAAS,GAAG,MAAM,IAAA,iBAAW,EACjC,GAAG,EACH,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,EACxC,QAAQ,EACR,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAC1B,CAAC;IACF,IAAI,SAAS,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC,CAAC;AAfW,QAAA,SAAS,aAepB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseLLM } from "../../llms";
|
|
2
2
|
import { Agent, Tool, AgentInput, SerializedAgentT } from "../index";
|
|
3
|
-
import { PromptTemplate } from "../../
|
|
3
|
+
import { PromptTemplate } from "../../prompts";
|
|
4
4
|
type SerializedFromLLMAndTools = {
|
|
5
5
|
suffix?: string;
|
|
6
6
|
prefix?: string;
|
|
@@ -8,17 +8,34 @@ type SerializedFromLLMAndTools = {
|
|
|
8
8
|
};
|
|
9
9
|
export type SerializedZeroShotAgent = SerializedAgentT<"zero-shot-react-description", SerializedFromLLMAndTools, AgentInput>;
|
|
10
10
|
type CreatePromptArgs = {
|
|
11
|
+
/** String to put after the list of tools. */
|
|
11
12
|
suffix?: string;
|
|
13
|
+
/** String to put before the list of tools. */
|
|
12
14
|
prefix?: string;
|
|
15
|
+
/** List of input variables the final prompt will expect. */
|
|
13
16
|
inputVariables?: string[];
|
|
14
17
|
};
|
|
15
18
|
type ZeroShotAgentInput = AgentInput;
|
|
19
|
+
/**
|
|
20
|
+
* Agent for the MRKL chain.
|
|
21
|
+
* @augments Agent
|
|
22
|
+
* @augments StaticAgent
|
|
23
|
+
*/
|
|
16
24
|
export declare class ZeroShotAgent extends Agent {
|
|
17
25
|
constructor(input: ZeroShotAgentInput);
|
|
18
26
|
_agentType(): "zero-shot-react-description";
|
|
19
27
|
observationPrefix(): string;
|
|
20
28
|
llmPrefix(): string;
|
|
21
29
|
static validateTools(tools: Tool[]): void;
|
|
30
|
+
/**
|
|
31
|
+
* Create prompt in the style of the zero shot agent.
|
|
32
|
+
*
|
|
33
|
+
* @param tools - List of tools the agent will have access to, used to format the prompt.
|
|
34
|
+
* @param args - Arguments to create the prompt with.
|
|
35
|
+
* @param args.suffix - String to put after the list of tools.
|
|
36
|
+
* @param args.prefix - String to put before the list of tools.
|
|
37
|
+
* @param args.inputVariables - List of input variables the final prompt will expect.
|
|
38
|
+
*/
|
|
22
39
|
static createPrompt(tools: Tool[], args?: CreatePromptArgs): PromptTemplate;
|
|
23
40
|
static fromLLMAndTools(llm: BaseLLM, tools: Tool[], args?: CreatePromptArgs): ZeroShotAgent;
|
|
24
41
|
extractToolAndInput(text: string): {
|