@langchain/classic 1.0.8 → 1.0.10-dev-1768440391024
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/CHANGELOG.md +8 -0
- package/dist/agents/agent.cjs.map +1 -1
- package/dist/agents/agent.js.map +1 -1
- package/dist/agents/helpers.cjs.map +1 -1
- package/dist/agents/helpers.js.map +1 -1
- package/dist/agents/openai_functions/index.cjs.map +1 -1
- package/dist/agents/openai_functions/index.js.map +1 -1
- package/dist/agents/openai_tools/index.d.cts +2 -2
- package/dist/agents/openai_tools/index.d.cts.map +1 -1
- package/dist/agents/openai_tools/index.d.ts +2 -2
- package/dist/agents/openai_tools/index.d.ts.map +1 -1
- package/dist/agents/react/index.d.ts +2 -2
- package/dist/agents/react/index.d.ts.map +1 -1
- package/dist/agents/structured_chat/index.d.cts +2 -2
- package/dist/agents/structured_chat/index.d.cts.map +1 -1
- package/dist/agents/structured_chat/index.d.ts +2 -2
- package/dist/agents/structured_chat/index.d.ts.map +1 -1
- package/dist/agents/tool_calling/index.d.ts +2 -2
- package/dist/agents/tool_calling/index.d.ts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.cts +2 -2
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.cts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.cts +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.cts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.ts +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.ts.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/chains/base.cjs.map +1 -1
- package/dist/chains/base.js.map +1 -1
- package/dist/chains/combine_docs_chain.cjs.map +1 -1
- package/dist/chains/combine_docs_chain.js.map +1 -1
- package/dist/chains/llm_chain.cjs.map +1 -1
- package/dist/chains/llm_chain.js.map +1 -1
- package/dist/chains/openai_functions/base.cjs.map +1 -1
- package/dist/chains/openai_functions/base.js.map +1 -1
- package/dist/chains/openai_functions/openapi.cjs.map +1 -1
- package/dist/chains/openai_functions/openapi.js.map +1 -1
- package/dist/chains/query_constructor/index.cjs.map +1 -1
- package/dist/chains/query_constructor/index.js.map +1 -1
- package/dist/chains/query_constructor/parser.cjs.map +1 -1
- package/dist/chains/query_constructor/parser.js.map +1 -1
- package/dist/chains/router/multi_prompt.cjs.map +1 -1
- package/dist/chains/router/multi_prompt.js.map +1 -1
- package/dist/chains/transform.cjs.map +1 -1
- package/dist/chains/transform.js.map +1 -1
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/document_loaders/fs/json.cjs.map +1 -1
- package/dist/document_loaders/fs/json.js.map +1 -1
- package/dist/embeddings/cache_backed.cjs.map +1 -1
- package/dist/embeddings/cache_backed.js.map +1 -1
- package/dist/evaluation/base.cjs.map +1 -1
- package/dist/evaluation/base.js.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.ts +3 -3
- package/dist/evaluation/comparison/pairwise.d.ts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.ts +3 -3
- package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
- package/dist/experimental/autogpt/prompt.d.cts +2 -2
- package/dist/experimental/autogpt/prompt.d.cts.map +1 -1
- package/dist/experimental/autogpt/prompt.d.ts +2 -2
- package/dist/experimental/autogpt/prompt.d.ts.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.cjs.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.js.map +1 -1
- package/dist/experimental/openai_assistant/index.cjs.map +1 -1
- package/dist/experimental/openai_assistant/index.js.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.js.map +1 -1
- package/dist/experimental/prompts/custom_format.cjs.map +1 -1
- package/dist/experimental/prompts/custom_format.d.cts.map +1 -1
- package/dist/experimental/prompts/custom_format.d.ts.map +1 -1
- package/dist/experimental/prompts/custom_format.js.map +1 -1
- package/dist/experimental/prompts/handlebars.cjs.map +1 -1
- package/dist/experimental/prompts/handlebars.d.cts.map +1 -1
- package/dist/experimental/prompts/handlebars.js.map +1 -1
- package/dist/load/import_constants.cjs +24 -24
- package/dist/load/import_constants.cjs.map +1 -1
- package/dist/load/import_constants.js +24 -24
- package/dist/load/import_constants.js.map +1 -1
- package/dist/load/import_map.cjs +44 -44
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +52 -52
- package/dist/load/import_map.js.map +1 -1
- package/dist/output_parsers/openai_functions.cjs.map +1 -1
- package/dist/output_parsers/openai_functions.js.map +1 -1
- package/dist/output_parsers/regex.cjs.map +1 -1
- package/dist/output_parsers/regex.js.map +1 -1
- package/dist/output_parsers/router.cjs.map +1 -1
- package/dist/output_parsers/router.js.map +1 -1
- package/dist/output_parsers/structured.cjs.map +1 -1
- package/dist/output_parsers/structured.js.map +1 -1
- package/dist/retrievers/document_compressors/index.cjs.map +1 -1
- package/dist/retrievers/document_compressors/index.js.map +1 -1
- package/dist/retrievers/hyde.cjs +1 -1
- package/dist/retrievers/hyde.cjs.map +1 -1
- package/dist/retrievers/hyde.d.cts.map +1 -1
- package/dist/retrievers/hyde.js +1 -1
- package/dist/retrievers/hyde.js.map +1 -1
- package/dist/retrievers/matryoshka_retriever.cjs +1 -1
- package/dist/retrievers/matryoshka_retriever.cjs.map +1 -1
- package/dist/retrievers/matryoshka_retriever.js +1 -1
- package/dist/retrievers/matryoshka_retriever.js.map +1 -1
- package/dist/retrievers/score_threshold.cjs.map +1 -1
- package/dist/retrievers/score_threshold.js.map +1 -1
- package/dist/retrievers/self_query/index.cjs +1 -1
- package/dist/retrievers/self_query/index.d.ts +1 -1
- package/dist/retrievers/self_query/index.js +1 -1
- package/dist/smith/config.cjs.map +1 -1
- package/dist/smith/config.js.map +1 -1
- package/dist/smith/runner_utils.cjs.map +1 -1
- package/dist/smith/runner_utils.js.map +1 -1
- package/dist/tools/retriever.d.cts +1 -1
- package/dist/tools/retriever.d.cts.map +1 -1
- package/dist/tools/retriever.d.ts +1 -1
- package/dist/tools/retriever.d.ts.map +1 -1
- package/dist/util/sql_utils.cjs.map +1 -1
- package/dist/util/sql_utils.js.map +1 -1
- package/dist/vectorstores/memory.cjs +1 -1
- package/dist/vectorstores/memory.js +1 -1
- package/package.json +19 -20
- package/agents/format_scratchpad/log.cjs +0 -1
- package/agents/format_scratchpad/log.d.cts +0 -1
- package/agents/format_scratchpad/log.d.ts +0 -1
- package/agents/format_scratchpad/log.js +0 -1
- package/agents/format_scratchpad/log_to_message.cjs +0 -1
- package/agents/format_scratchpad/log_to_message.d.cts +0 -1
- package/agents/format_scratchpad/log_to_message.d.ts +0 -1
- package/agents/format_scratchpad/log_to_message.js +0 -1
- package/agents/format_scratchpad/openai_functions.cjs +0 -1
- package/agents/format_scratchpad/openai_functions.d.cts +0 -1
- package/agents/format_scratchpad/openai_functions.d.ts +0 -1
- package/agents/format_scratchpad/openai_functions.js +0 -1
- package/agents/format_scratchpad/openai_tools.cjs +0 -1
- package/agents/format_scratchpad/openai_tools.d.cts +0 -1
- package/agents/format_scratchpad/openai_tools.d.ts +0 -1
- package/agents/format_scratchpad/openai_tools.js +0 -1
- package/agents/format_scratchpad/xml.cjs +0 -1
- package/agents/format_scratchpad/xml.d.cts +0 -1
- package/agents/format_scratchpad/xml.d.ts +0 -1
- package/agents/format_scratchpad/xml.js +0 -1
- package/agents/load.cjs +0 -1
- package/agents/load.d.cts +0 -1
- package/agents/load.d.ts +0 -1
- package/agents/load.js +0 -1
- package/agents/openai/output_parser.cjs +0 -1
- package/agents/openai/output_parser.d.cts +0 -1
- package/agents/openai/output_parser.d.ts +0 -1
- package/agents/openai/output_parser.js +0 -1
- package/agents/react/output_parser.cjs +0 -1
- package/agents/react/output_parser.d.cts +0 -1
- package/agents/react/output_parser.d.ts +0 -1
- package/agents/react/output_parser.js +0 -1
- package/agents/toolkits/sql.cjs +0 -1
- package/agents/toolkits/sql.d.cts +0 -1
- package/agents/toolkits/sql.d.ts +0 -1
- package/agents/toolkits/sql.js +0 -1
- package/agents/toolkits.cjs +0 -1
- package/agents/toolkits.d.cts +0 -1
- package/agents/toolkits.d.ts +0 -1
- package/agents/toolkits.js +0 -1
- package/agents/xml/output_parser.cjs +0 -1
- package/agents/xml/output_parser.d.cts +0 -1
- package/agents/xml/output_parser.d.ts +0 -1
- package/agents/xml/output_parser.js +0 -1
- package/agents.cjs +0 -1
- package/agents.d.cts +0 -1
- package/agents.d.ts +0 -1
- package/agents.js +0 -1
- package/cache/file_system.cjs +0 -1
- package/cache/file_system.d.cts +0 -1
- package/cache/file_system.d.ts +0 -1
- package/cache/file_system.js +0 -1
- package/callbacks.cjs +0 -1
- package/callbacks.d.cts +0 -1
- package/callbacks.d.ts +0 -1
- package/callbacks.js +0 -1
- package/chains/combine_documents/reduce.cjs +0 -1
- package/chains/combine_documents/reduce.d.cts +0 -1
- package/chains/combine_documents/reduce.d.ts +0 -1
- package/chains/combine_documents/reduce.js +0 -1
- package/chains/combine_documents.cjs +0 -1
- package/chains/combine_documents.d.cts +0 -1
- package/chains/combine_documents.d.ts +0 -1
- package/chains/combine_documents.js +0 -1
- package/chains/graph_qa/cypher.cjs +0 -1
- package/chains/graph_qa/cypher.d.cts +0 -1
- package/chains/graph_qa/cypher.d.ts +0 -1
- package/chains/graph_qa/cypher.js +0 -1
- package/chains/history_aware_retriever.cjs +0 -1
- package/chains/history_aware_retriever.d.cts +0 -1
- package/chains/history_aware_retriever.d.ts +0 -1
- package/chains/history_aware_retriever.js +0 -1
- package/chains/load.cjs +0 -1
- package/chains/load.d.cts +0 -1
- package/chains/load.d.ts +0 -1
- package/chains/load.js +0 -1
- package/chains/openai_functions.cjs +0 -1
- package/chains/openai_functions.d.cts +0 -1
- package/chains/openai_functions.d.ts +0 -1
- package/chains/openai_functions.js +0 -1
- package/chains/query_constructor/ir.cjs +0 -1
- package/chains/query_constructor/ir.d.cts +0 -1
- package/chains/query_constructor/ir.d.ts +0 -1
- package/chains/query_constructor/ir.js +0 -1
- package/chains/query_constructor.cjs +0 -1
- package/chains/query_constructor.d.cts +0 -1
- package/chains/query_constructor.d.ts +0 -1
- package/chains/query_constructor.js +0 -1
- package/chains/retrieval.cjs +0 -1
- package/chains/retrieval.d.cts +0 -1
- package/chains/retrieval.d.ts +0 -1
- package/chains/retrieval.js +0 -1
- package/chains/sql_db.cjs +0 -1
- package/chains/sql_db.d.cts +0 -1
- package/chains/sql_db.d.ts +0 -1
- package/chains/sql_db.js +0 -1
- package/chains.cjs +0 -1
- package/chains.d.cts +0 -1
- package/chains.d.ts +0 -1
- package/chains.js +0 -1
- package/chat_models/universal.cjs +0 -1
- package/chat_models/universal.d.cts +0 -1
- package/chat_models/universal.d.ts +0 -1
- package/chat_models/universal.js +0 -1
- package/document.cjs +0 -1
- package/document.d.cts +0 -1
- package/document.d.ts +0 -1
- package/document.js +0 -1
- package/document_loaders/base.cjs +0 -1
- package/document_loaders/base.d.cts +0 -1
- package/document_loaders/base.d.ts +0 -1
- package/document_loaders/base.js +0 -1
- package/document_loaders/fs/buffer.cjs +0 -1
- package/document_loaders/fs/buffer.d.cts +0 -1
- package/document_loaders/fs/buffer.d.ts +0 -1
- package/document_loaders/fs/buffer.js +0 -1
- package/document_loaders/fs/directory.cjs +0 -1
- package/document_loaders/fs/directory.d.cts +0 -1
- package/document_loaders/fs/directory.d.ts +0 -1
- package/document_loaders/fs/directory.js +0 -1
- package/document_loaders/fs/json.cjs +0 -1
- package/document_loaders/fs/json.d.cts +0 -1
- package/document_loaders/fs/json.d.ts +0 -1
- package/document_loaders/fs/json.js +0 -1
- package/document_loaders/fs/multi_file.cjs +0 -1
- package/document_loaders/fs/multi_file.d.cts +0 -1
- package/document_loaders/fs/multi_file.d.ts +0 -1
- package/document_loaders/fs/multi_file.js +0 -1
- package/document_loaders/fs/text.cjs +0 -1
- package/document_loaders/fs/text.d.cts +0 -1
- package/document_loaders/fs/text.d.ts +0 -1
- package/document_loaders/fs/text.js +0 -1
- package/document_transformers/openai_functions.cjs +0 -1
- package/document_transformers/openai_functions.d.cts +0 -1
- package/document_transformers/openai_functions.d.ts +0 -1
- package/document_transformers/openai_functions.js +0 -1
- package/embeddings/cache_backed.cjs +0 -1
- package/embeddings/cache_backed.d.cts +0 -1
- package/embeddings/cache_backed.d.ts +0 -1
- package/embeddings/cache_backed.js +0 -1
- package/embeddings/fake.cjs +0 -1
- package/embeddings/fake.d.cts +0 -1
- package/embeddings/fake.d.ts +0 -1
- package/embeddings/fake.js +0 -1
- package/evaluation.cjs +0 -1
- package/evaluation.d.cts +0 -1
- package/evaluation.d.ts +0 -1
- package/evaluation.js +0 -1
- package/experimental/autogpt.cjs +0 -1
- package/experimental/autogpt.d.cts +0 -1
- package/experimental/autogpt.d.ts +0 -1
- package/experimental/autogpt.js +0 -1
- package/experimental/babyagi.cjs +0 -1
- package/experimental/babyagi.d.cts +0 -1
- package/experimental/babyagi.d.ts +0 -1
- package/experimental/babyagi.js +0 -1
- package/experimental/chains/violation_of_expectations.cjs +0 -1
- package/experimental/chains/violation_of_expectations.d.cts +0 -1
- package/experimental/chains/violation_of_expectations.d.ts +0 -1
- package/experimental/chains/violation_of_expectations.js +0 -1
- package/experimental/generative_agents.cjs +0 -1
- package/experimental/generative_agents.d.cts +0 -1
- package/experimental/generative_agents.d.ts +0 -1
- package/experimental/generative_agents.js +0 -1
- package/experimental/masking.cjs +0 -1
- package/experimental/masking.d.cts +0 -1
- package/experimental/masking.d.ts +0 -1
- package/experimental/masking.js +0 -1
- package/experimental/openai_assistant.cjs +0 -1
- package/experimental/openai_assistant.d.cts +0 -1
- package/experimental/openai_assistant.d.ts +0 -1
- package/experimental/openai_assistant.js +0 -1
- package/experimental/openai_files.cjs +0 -1
- package/experimental/openai_files.d.cts +0 -1
- package/experimental/openai_files.d.ts +0 -1
- package/experimental/openai_files.js +0 -1
- package/experimental/plan_and_execute.cjs +0 -1
- package/experimental/plan_and_execute.d.cts +0 -1
- package/experimental/plan_and_execute.d.ts +0 -1
- package/experimental/plan_and_execute.js +0 -1
- package/experimental/prompts/custom_format.cjs +0 -1
- package/experimental/prompts/custom_format.d.cts +0 -1
- package/experimental/prompts/custom_format.d.ts +0 -1
- package/experimental/prompts/custom_format.js +0 -1
- package/experimental/prompts/handlebars.cjs +0 -1
- package/experimental/prompts/handlebars.d.cts +0 -1
- package/experimental/prompts/handlebars.d.ts +0 -1
- package/experimental/prompts/handlebars.js +0 -1
- package/hub/node.cjs +0 -1
- package/hub/node.d.cts +0 -1
- package/hub/node.d.ts +0 -1
- package/hub/node.js +0 -1
- package/hub.cjs +0 -1
- package/hub.d.cts +0 -1
- package/hub.d.ts +0 -1
- package/hub.js +0 -1
- package/indexes.cjs +0 -1
- package/indexes.d.cts +0 -1
- package/indexes.d.ts +0 -1
- package/indexes.js +0 -1
- package/load/serializable.cjs +0 -1
- package/load/serializable.d.cts +0 -1
- package/load/serializable.d.ts +0 -1
- package/load/serializable.js +0 -1
- package/load.cjs +0 -1
- package/load.d.cts +0 -1
- package/load.d.ts +0 -1
- package/load.js +0 -1
- package/memory/chat_memory.cjs +0 -1
- package/memory/chat_memory.d.cts +0 -1
- package/memory/chat_memory.d.ts +0 -1
- package/memory/chat_memory.js +0 -1
- package/memory.cjs +0 -1
- package/memory.d.cts +0 -1
- package/memory.d.ts +0 -1
- package/memory.js +0 -1
- package/output_parsers/expression.cjs +0 -1
- package/output_parsers/expression.d.cts +0 -1
- package/output_parsers/expression.d.ts +0 -1
- package/output_parsers/expression.js +0 -1
- package/output_parsers.cjs +0 -1
- package/output_parsers.d.cts +0 -1
- package/output_parsers.d.ts +0 -1
- package/output_parsers.js +0 -1
- package/retrievers/contextual_compression.cjs +0 -1
- package/retrievers/contextual_compression.d.cts +0 -1
- package/retrievers/contextual_compression.d.ts +0 -1
- package/retrievers/contextual_compression.js +0 -1
- package/retrievers/document_compressors/chain_extract.cjs +0 -1
- package/retrievers/document_compressors/chain_extract.d.cts +0 -1
- package/retrievers/document_compressors/chain_extract.d.ts +0 -1
- package/retrievers/document_compressors/chain_extract.js +0 -1
- package/retrievers/document_compressors/embeddings_filter.cjs +0 -1
- package/retrievers/document_compressors/embeddings_filter.d.cts +0 -1
- package/retrievers/document_compressors/embeddings_filter.d.ts +0 -1
- package/retrievers/document_compressors/embeddings_filter.js +0 -1
- package/retrievers/document_compressors.cjs +0 -1
- package/retrievers/document_compressors.d.cts +0 -1
- package/retrievers/document_compressors.d.ts +0 -1
- package/retrievers/document_compressors.js +0 -1
- package/retrievers/ensemble.cjs +0 -1
- package/retrievers/ensemble.d.cts +0 -1
- package/retrievers/ensemble.d.ts +0 -1
- package/retrievers/ensemble.js +0 -1
- package/retrievers/hyde.cjs +0 -1
- package/retrievers/hyde.d.cts +0 -1
- package/retrievers/hyde.d.ts +0 -1
- package/retrievers/hyde.js +0 -1
- package/retrievers/matryoshka_retriever.cjs +0 -1
- package/retrievers/matryoshka_retriever.d.cts +0 -1
- package/retrievers/matryoshka_retriever.d.ts +0 -1
- package/retrievers/matryoshka_retriever.js +0 -1
- package/retrievers/multi_query.cjs +0 -1
- package/retrievers/multi_query.d.cts +0 -1
- package/retrievers/multi_query.d.ts +0 -1
- package/retrievers/multi_query.js +0 -1
- package/retrievers/multi_vector.cjs +0 -1
- package/retrievers/multi_vector.d.cts +0 -1
- package/retrievers/multi_vector.d.ts +0 -1
- package/retrievers/multi_vector.js +0 -1
- package/retrievers/parent_document.cjs +0 -1
- package/retrievers/parent_document.d.cts +0 -1
- package/retrievers/parent_document.d.ts +0 -1
- package/retrievers/parent_document.js +0 -1
- package/retrievers/score_threshold.cjs +0 -1
- package/retrievers/score_threshold.d.cts +0 -1
- package/retrievers/score_threshold.d.ts +0 -1
- package/retrievers/score_threshold.js +0 -1
- package/retrievers/self_query/functional.cjs +0 -1
- package/retrievers/self_query/functional.d.cts +0 -1
- package/retrievers/self_query/functional.d.ts +0 -1
- package/retrievers/self_query/functional.js +0 -1
- package/retrievers/self_query.cjs +0 -1
- package/retrievers/self_query.d.cts +0 -1
- package/retrievers/self_query.d.ts +0 -1
- package/retrievers/self_query.js +0 -1
- package/retrievers/time_weighted.cjs +0 -1
- package/retrievers/time_weighted.d.cts +0 -1
- package/retrievers/time_weighted.d.ts +0 -1
- package/retrievers/time_weighted.js +0 -1
- package/schema/prompt_template.cjs +0 -1
- package/schema/prompt_template.d.cts +0 -1
- package/schema/prompt_template.d.ts +0 -1
- package/schema/prompt_template.js +0 -1
- package/schema/query_constructor.cjs +0 -1
- package/schema/query_constructor.d.cts +0 -1
- package/schema/query_constructor.d.ts +0 -1
- package/schema/query_constructor.js +0 -1
- package/smith.cjs +0 -1
- package/smith.d.cts +0 -1
- package/smith.d.ts +0 -1
- package/smith.js +0 -1
- package/sql_db.cjs +0 -1
- package/sql_db.d.cts +0 -1
- package/sql_db.d.ts +0 -1
- package/sql_db.js +0 -1
- package/storage/encoder_backed.cjs +0 -1
- package/storage/encoder_backed.d.cts +0 -1
- package/storage/encoder_backed.d.ts +0 -1
- package/storage/encoder_backed.js +0 -1
- package/storage/file_system.cjs +0 -1
- package/storage/file_system.d.cts +0 -1
- package/storage/file_system.d.ts +0 -1
- package/storage/file_system.js +0 -1
- package/storage/in_memory.cjs +0 -1
- package/storage/in_memory.d.cts +0 -1
- package/storage/in_memory.d.ts +0 -1
- package/storage/in_memory.js +0 -1
- package/stores/doc/base.cjs +0 -1
- package/stores/doc/base.d.cts +0 -1
- package/stores/doc/base.d.ts +0 -1
- package/stores/doc/base.js +0 -1
- package/stores/doc/in_memory.cjs +0 -1
- package/stores/doc/in_memory.d.cts +0 -1
- package/stores/doc/in_memory.d.ts +0 -1
- package/stores/doc/in_memory.js +0 -1
- package/stores/file/in_memory.cjs +0 -1
- package/stores/file/in_memory.d.cts +0 -1
- package/stores/file/in_memory.d.ts +0 -1
- package/stores/file/in_memory.js +0 -1
- package/stores/file/node.cjs +0 -1
- package/stores/file/node.d.cts +0 -1
- package/stores/file/node.d.ts +0 -1
- package/stores/file/node.js +0 -1
- package/stores/message/in_memory.cjs +0 -1
- package/stores/message/in_memory.d.cts +0 -1
- package/stores/message/in_memory.d.ts +0 -1
- package/stores/message/in_memory.js +0 -1
- package/text_splitter.cjs +0 -1
- package/text_splitter.d.cts +0 -1
- package/text_splitter.d.ts +0 -1
- package/text_splitter.js +0 -1
- package/tools/chain.cjs +0 -1
- package/tools/chain.d.cts +0 -1
- package/tools/chain.d.ts +0 -1
- package/tools/chain.js +0 -1
- package/tools/render.cjs +0 -1
- package/tools/render.d.cts +0 -1
- package/tools/render.d.ts +0 -1
- package/tools/render.js +0 -1
- package/tools/retriever.cjs +0 -1
- package/tools/retriever.d.cts +0 -1
- package/tools/retriever.d.ts +0 -1
- package/tools/retriever.js +0 -1
- package/tools/sql.cjs +0 -1
- package/tools/sql.d.cts +0 -1
- package/tools/sql.d.ts +0 -1
- package/tools/sql.js +0 -1
- package/tools/webbrowser.cjs +0 -1
- package/tools/webbrowser.d.cts +0 -1
- package/tools/webbrowser.d.ts +0 -1
- package/tools/webbrowser.js +0 -1
- package/tools.cjs +0 -1
- package/tools.d.cts +0 -1
- package/tools.d.ts +0 -1
- package/tools.js +0 -1
- package/util/document.cjs +0 -1
- package/util/document.d.cts +0 -1
- package/util/document.d.ts +0 -1
- package/util/document.js +0 -1
- package/util/math.cjs +0 -1
- package/util/math.d.cts +0 -1
- package/util/math.d.ts +0 -1
- package/util/math.js +0 -1
- package/util/time.cjs +0 -1
- package/util/time.d.cts +0 -1
- package/util/time.d.ts +0 -1
- package/util/time.js +0 -1
- package/vectorstores/memory.cjs +0 -1
- package/vectorstores/memory.d.cts +0 -1
- package/vectorstores/memory.d.ts +0 -1
- package/vectorstores/memory.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.cjs","names":["xs: Set<string>","ys: Set<string>","LLMChain","reference?: string","input?: string","BaseChain","args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>","config?: Callbacks | BaseCallbackConfig","args: StringEvaluatorArgs","args: PairwiseStringEvaluatorArgs","args: LLMPairwiseStringEvaluatorArgs","callOptions?: ExtractLLMCallOptions<this[\"llm\"]>","args: LLMTrajectoryEvaluatorArgs"],"sources":["../../src/evaluation/base.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport {\n BaseCallbackConfig,\n Callbacks,\n} from \"@langchain/core/callbacks/manager\";\nimport { BaseChain, LLMChain, LLMChainInput } from \"../chains/index.js\";\n\n/**\n * Base input for evaluators.\n */\nexport interface LLMEvalChainInput<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface\n> extends LLMChainInput<T, L> {}\n\nexport type ExtractLLMCallOptions<LanguageModelInterface> =\n LanguageModelInterface extends BaseLanguageModelInterface<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n infer CallOptions\n >\n ? CallOptions\n : never;\n\n/**\n * Compare two sets for equality\n *\n * @param xs\n * @param ys\n */\nexport const eqSet = (xs: Set<string>, ys: Set<string>) =>\n xs.size === ys.size && [...xs].every((x) => ys.has(x));\n\n/**\n * The type of the output of an evaluation evaluator.\n */\nexport type EvalOutputType = Record<string, string | number | boolean>;\n\n/**\n * Base llm chain class for evaluators.\n */\nexport abstract class LLMEvalChain<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface\n> extends LLMChain<T, L> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * Base chain class for evaluators.\n */\nexport abstract class EvalChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues\n> extends BaseChain<RunInput, RunOutput> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * @field prediction The output string from the model.\n * @field reference The expected output / reference string.\n * @field input The input string.\n */\nexport interface StringEvaluatorArgs {\n prediction: string;\n reference?: string;\n input?: string;\n}\n\n/**\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n */\nexport interface PairwiseStringEvaluatorArgs {\n prediction: string;\n predictionB: string;\n}\n\n/**\n * @field The input string.\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n * @field reference The expected output / reference string.\n */\nexport interface LLMPairwiseStringEvaluatorArgs {\n input: string;\n prediction: string;\n predictionB: string;\n reference?: string;\n}\n\n/**\n * Args for AgentTrajectoryEvaluator\n * @field input The input to the agent.\n * @field prediction The final predicted response.\n * @field reference The reference answer.\n * @field agentTrajectory The intermediate steps forming the agent trajectory.\n */\nexport interface LLMTrajectoryEvaluatorArgs {\n input: string;\n prediction: string;\n reference?: string;\n agentTrajectory: AgentStep[];\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class LLMStringEvaluator<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface\n> extends LLMEvalChain<T, L> {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class StringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class PairwiseStringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n return this._evaluateStringPairs(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class LLMPairwiseStringEvaluator extends LLMEvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStringPairs(args, callOptions, config);\n }\n}\n\n/**\n * Interface for evaluating agent trajectories.\n */\nexport abstract class AgentTrajectoryEvaluator extends LLMEvalChain {\n requiresInput = true;\n\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateAgentTrajectory(args, callOptions, config);\n }\n}\n"],"mappings":";;;;;;;;;;;AAgCA,MAAa,QAAQ,CAACA,IAAiBC,OACrC,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAG,EAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;;;;AAUxD,IAAsB,eAAtB,cAGUC,2BAAe;CACvB,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBC,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;AAKD,IAAsB,YAAtB,cAGUC,uBAA+B;CACvC,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBF,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;;AAqDD,IAAsB,qBAAtB,cAGU,aAAmB;;;;CAI3B,iBAA0B,KAAK,YAAY;;;;;;;;;;;CA2B3C,gBACEE,MACAC,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;;AAMD,IAAsB,kBAAtB,cAA8C,UAAU;;;;CAItD,iBAA0B,KAAK,YAAY;;;;;;;;;;CAyB3C,gBACEC,MACAD,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;AAKD,IAAsB,0BAAtB,cAAsD,UAAU;;;;CAI9D,iBAA0B,KAAK,YAAY;;;;;;;CAmB3C,oBACEE,MACAF,QACsB;AACtB,SAAO,KAAK,qBAAqB,MAAM,OAAO;CAC/C;AACF;;;;AAKD,IAAsB,6BAAtB,cAAyD,aAAa;;;;CAIpE,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,oBACEG,MACAC,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,qBAAqB,MAAM,aAAa,OAAO;CAC5D;AACF;;;;AAKD,IAAsB,2BAAtB,cAAuD,aAAa;CAClE,gBAAgB;;;;CAKhB,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,wBACEK,MACAD,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,yBAAyB,MAAM,aAAa,OAAO;CAChE;AACF"}
|
|
1
|
+
{"version":3,"file":"base.cjs","names":["xs: Set<string>","ys: Set<string>","LLMChain","reference?: string","input?: string","BaseChain","args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>","config?: Callbacks | BaseCallbackConfig","args: StringEvaluatorArgs","args: PairwiseStringEvaluatorArgs","args: LLMPairwiseStringEvaluatorArgs","callOptions?: ExtractLLMCallOptions<this[\"llm\"]>","args: LLMTrajectoryEvaluatorArgs"],"sources":["../../src/evaluation/base.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport {\n BaseCallbackConfig,\n Callbacks,\n} from \"@langchain/core/callbacks/manager\";\nimport { BaseChain, LLMChain, LLMChainInput } from \"../chains/index.js\";\n\n/**\n * Base input for evaluators.\n */\nexport interface LLMEvalChainInput<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface,\n> extends LLMChainInput<T, L> {}\n\nexport type ExtractLLMCallOptions<LanguageModelInterface> =\n LanguageModelInterface extends BaseLanguageModelInterface<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n infer CallOptions\n >\n ? CallOptions\n : never;\n\n/**\n * Compare two sets for equality\n *\n * @param xs\n * @param ys\n */\nexport const eqSet = (xs: Set<string>, ys: Set<string>) =>\n xs.size === ys.size && [...xs].every((x) => ys.has(x));\n\n/**\n * The type of the output of an evaluation evaluator.\n */\nexport type EvalOutputType = Record<string, string | number | boolean>;\n\n/**\n * Base llm chain class for evaluators.\n */\nexport abstract class LLMEvalChain<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface,\n> extends LLMChain<T, L> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * Base chain class for evaluators.\n */\nexport abstract class EvalChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues,\n> extends BaseChain<RunInput, RunOutput> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * @field prediction The output string from the model.\n * @field reference The expected output / reference string.\n * @field input The input string.\n */\nexport interface StringEvaluatorArgs {\n prediction: string;\n reference?: string;\n input?: string;\n}\n\n/**\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n */\nexport interface PairwiseStringEvaluatorArgs {\n prediction: string;\n predictionB: string;\n}\n\n/**\n * @field The input string.\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n * @field reference The expected output / reference string.\n */\nexport interface LLMPairwiseStringEvaluatorArgs {\n input: string;\n prediction: string;\n predictionB: string;\n reference?: string;\n}\n\n/**\n * Args for AgentTrajectoryEvaluator\n * @field input The input to the agent.\n * @field prediction The final predicted response.\n * @field reference The reference answer.\n * @field agentTrajectory The intermediate steps forming the agent trajectory.\n */\nexport interface LLMTrajectoryEvaluatorArgs {\n input: string;\n prediction: string;\n reference?: string;\n agentTrajectory: AgentStep[];\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class LLMStringEvaluator<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface,\n> extends LLMEvalChain<T, L> {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class StringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class PairwiseStringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n return this._evaluateStringPairs(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class LLMPairwiseStringEvaluator extends LLMEvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStringPairs(args, callOptions, config);\n }\n}\n\n/**\n * Interface for evaluating agent trajectories.\n */\nexport abstract class AgentTrajectoryEvaluator extends LLMEvalChain {\n requiresInput = true;\n\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateAgentTrajectory(args, callOptions, config);\n }\n}\n"],"mappings":";;;;;;;;;;;AAgCA,MAAa,QAAQ,CAACA,IAAiBC,OACrC,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAG,EAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;;;;AAUxD,IAAsB,eAAtB,cAGUC,2BAAe;CACvB,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBC,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;AAKD,IAAsB,YAAtB,cAGUC,uBAA+B;CACvC,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBF,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;;AAqDD,IAAsB,qBAAtB,cAGU,aAAmB;;;;CAI3B,iBAA0B,KAAK,YAAY;;;;;;;;;;;CA2B3C,gBACEE,MACAC,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;;AAMD,IAAsB,kBAAtB,cAA8C,UAAU;;;;CAItD,iBAA0B,KAAK,YAAY;;;;;;;;;;CAyB3C,gBACEC,MACAD,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;AAKD,IAAsB,0BAAtB,cAAsD,UAAU;;;;CAI9D,iBAA0B,KAAK,YAAY;;;;;;;CAmB3C,oBACEE,MACAF,QACsB;AACtB,SAAO,KAAK,qBAAqB,MAAM,OAAO;CAC/C;AACF;;;;AAKD,IAAsB,6BAAtB,cAAyD,aAAa;;;;CAIpE,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,oBACEG,MACAC,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,qBAAqB,MAAM,aAAa,OAAO;CAC5D;AACF;;;;AAKD,IAAsB,2BAAtB,cAAuD,aAAa;CAClE,gBAAgB;;;;CAKhB,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,wBACEK,MACAD,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,yBAAyB,MAAM,aAAa,OAAO;CAChE;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","names":["xs: Set<string>","ys: Set<string>","reference?: string","input?: string","args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>","config?: Callbacks | BaseCallbackConfig","args: StringEvaluatorArgs","args: PairwiseStringEvaluatorArgs","args: LLMPairwiseStringEvaluatorArgs","callOptions?: ExtractLLMCallOptions<this[\"llm\"]>","args: LLMTrajectoryEvaluatorArgs"],"sources":["../../src/evaluation/base.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport {\n BaseCallbackConfig,\n Callbacks,\n} from \"@langchain/core/callbacks/manager\";\nimport { BaseChain, LLMChain, LLMChainInput } from \"../chains/index.js\";\n\n/**\n * Base input for evaluators.\n */\nexport interface LLMEvalChainInput<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface\n> extends LLMChainInput<T, L> {}\n\nexport type ExtractLLMCallOptions<LanguageModelInterface> =\n LanguageModelInterface extends BaseLanguageModelInterface<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n infer CallOptions\n >\n ? CallOptions\n : never;\n\n/**\n * Compare two sets for equality\n *\n * @param xs\n * @param ys\n */\nexport const eqSet = (xs: Set<string>, ys: Set<string>) =>\n xs.size === ys.size && [...xs].every((x) => ys.has(x));\n\n/**\n * The type of the output of an evaluation evaluator.\n */\nexport type EvalOutputType = Record<string, string | number | boolean>;\n\n/**\n * Base llm chain class for evaluators.\n */\nexport abstract class LLMEvalChain<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface\n> extends LLMChain<T, L> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * Base chain class for evaluators.\n */\nexport abstract class EvalChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues\n> extends BaseChain<RunInput, RunOutput> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * @field prediction The output string from the model.\n * @field reference The expected output / reference string.\n * @field input The input string.\n */\nexport interface StringEvaluatorArgs {\n prediction: string;\n reference?: string;\n input?: string;\n}\n\n/**\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n */\nexport interface PairwiseStringEvaluatorArgs {\n prediction: string;\n predictionB: string;\n}\n\n/**\n * @field The input string.\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n * @field reference The expected output / reference string.\n */\nexport interface LLMPairwiseStringEvaluatorArgs {\n input: string;\n prediction: string;\n predictionB: string;\n reference?: string;\n}\n\n/**\n * Args for AgentTrajectoryEvaluator\n * @field input The input to the agent.\n * @field prediction The final predicted response.\n * @field reference The reference answer.\n * @field agentTrajectory The intermediate steps forming the agent trajectory.\n */\nexport interface LLMTrajectoryEvaluatorArgs {\n input: string;\n prediction: string;\n reference?: string;\n agentTrajectory: AgentStep[];\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class LLMStringEvaluator<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface\n> extends LLMEvalChain<T, L> {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class StringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class PairwiseStringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n return this._evaluateStringPairs(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class LLMPairwiseStringEvaluator extends LLMEvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStringPairs(args, callOptions, config);\n }\n}\n\n/**\n * Interface for evaluating agent trajectories.\n */\nexport abstract class AgentTrajectoryEvaluator extends LLMEvalChain {\n requiresInput = true;\n\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateAgentTrajectory(args, callOptions, config);\n }\n}\n"],"mappings":";;;;;;;;;;;AAgCA,MAAa,QAAQ,CAACA,IAAiBC,OACrC,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAG,EAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;;;;AAUxD,IAAsB,eAAtB,cAGU,SAAe;CACvB,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBC,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;AAKD,IAAsB,YAAtB,cAGU,UAA+B;CACvC,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBD,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;;AAqDD,IAAsB,qBAAtB,cAGU,aAAmB;;;;CAI3B,iBAA0B,KAAK,YAAY;;;;;;;;;;;CA2B3C,gBACEC,MACAC,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;;AAMD,IAAsB,kBAAtB,cAA8C,UAAU;;;;CAItD,iBAA0B,KAAK,YAAY;;;;;;;;;;CAyB3C,gBACEC,MACAD,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;AAKD,IAAsB,0BAAtB,cAAsD,UAAU;;;;CAI9D,iBAA0B,KAAK,YAAY;;;;;;;CAmB3C,oBACEE,MACAF,QACsB;AACtB,SAAO,KAAK,qBAAqB,MAAM,OAAO;CAC/C;AACF;;;;AAKD,IAAsB,6BAAtB,cAAyD,aAAa;;;;CAIpE,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,oBACEG,MACAC,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,qBAAqB,MAAM,aAAa,OAAO;CAC5D;AACF;;;;AAKD,IAAsB,2BAAtB,cAAuD,aAAa;CAClE,gBAAgB;;;;CAKhB,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,wBACEK,MACAD,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,yBAAyB,MAAM,aAAa,OAAO;CAChE;AACF"}
|
|
1
|
+
{"version":3,"file":"base.js","names":["xs: Set<string>","ys: Set<string>","reference?: string","input?: string","args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>","config?: Callbacks | BaseCallbackConfig","args: StringEvaluatorArgs","args: PairwiseStringEvaluatorArgs","args: LLMPairwiseStringEvaluatorArgs","callOptions?: ExtractLLMCallOptions<this[\"llm\"]>","args: LLMTrajectoryEvaluatorArgs"],"sources":["../../src/evaluation/base.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { AgentStep } from \"@langchain/core/agents\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport {\n BaseCallbackConfig,\n Callbacks,\n} from \"@langchain/core/callbacks/manager\";\nimport { BaseChain, LLMChain, LLMChainInput } from \"../chains/index.js\";\n\n/**\n * Base input for evaluators.\n */\nexport interface LLMEvalChainInput<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface,\n> extends LLMChainInput<T, L> {}\n\nexport type ExtractLLMCallOptions<LanguageModelInterface> =\n LanguageModelInterface extends BaseLanguageModelInterface<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n infer CallOptions\n >\n ? CallOptions\n : never;\n\n/**\n * Compare two sets for equality\n *\n * @param xs\n * @param ys\n */\nexport const eqSet = (xs: Set<string>, ys: Set<string>) =>\n xs.size === ys.size && [...xs].every((x) => ys.has(x));\n\n/**\n * The type of the output of an evaluation evaluator.\n */\nexport type EvalOutputType = Record<string, string | number | boolean>;\n\n/**\n * Base llm chain class for evaluators.\n */\nexport abstract class LLMEvalChain<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface,\n> extends LLMChain<T, L> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * Base chain class for evaluators.\n */\nexport abstract class EvalChain<\n RunInput extends ChainValues = ChainValues,\n RunOutput extends ChainValues = ChainValues,\n> extends BaseChain<RunInput, RunOutput> {\n requiresInput?: boolean = false;\n\n requiresReference?: boolean = false;\n\n skipInputWarning?: string = `Ignoring input in ${this.constructor.name}, as it is not expected.`;\n\n skipReferenceWarning?: string = `Ignoring reference in ${this.constructor.name}, as it is not expected.`;\n\n /**\n * Check if the evaluation arguments are valid.\n * @param reference The reference label.\n * @param input The input string.\n * @throws {Error} If the evaluator requires an input string but none is provided, or if the evaluator requires a reference label but none is provided.\n */\n checkEvaluationArgs(reference?: string, input?: string): void {\n if (this.requiresInput && input == null) {\n throw new Error(`${this.constructor.name} requires an input string.`);\n } else if (input != null && !this.requiresInput) {\n console.warn(this.skipInputWarning);\n }\n if (this.requiresReference && reference == null) {\n throw new Error(`${this.constructor.name} requires a reference string.`);\n } else if (reference != null && !this.requiresReference) {\n console.warn(this.skipReferenceWarning);\n }\n }\n}\n\n/**\n * @field prediction The output string from the model.\n * @field reference The expected output / reference string.\n * @field input The input string.\n */\nexport interface StringEvaluatorArgs {\n prediction: string;\n reference?: string;\n input?: string;\n}\n\n/**\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n */\nexport interface PairwiseStringEvaluatorArgs {\n prediction: string;\n predictionB: string;\n}\n\n/**\n * @field The input string.\n * @field prediction The output string from the first model.\n * @field predictionB The output string from the second model.\n * @field reference The expected output / reference string.\n */\nexport interface LLMPairwiseStringEvaluatorArgs {\n input: string;\n prediction: string;\n predictionB: string;\n reference?: string;\n}\n\n/**\n * Args for AgentTrajectoryEvaluator\n * @field input The input to the agent.\n * @field prediction The final predicted response.\n * @field reference The reference answer.\n * @field agentTrajectory The intermediate steps forming the agent trajectory.\n */\nexport interface LLMTrajectoryEvaluatorArgs {\n input: string;\n prediction: string;\n reference?: string;\n agentTrajectory: AgentStep[];\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class LLMStringEvaluator<\n T extends EvalOutputType = EvalOutputType,\n L extends BaseLanguageModelInterface = BaseLanguageModelInterface,\n> extends LLMEvalChain<T, L> {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Grade, tag, or otherwise evaluate predictions relative to their inputs\n * and/or reference labels\n */\nexport abstract class StringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n abstract _evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate Chain or LLM output, based on optional input and label.\n * @returns The evaluation results containing the score or value. It is recommended that the dictionary contain the following keys:\n * - score: the score of the evaluation, if applicable.\n * - value: the string value of the evaluation, if applicable.\n * - reasoning: the reasoning for the evaluation, if applicable.\n * @param args\n * @param config\n */\n evaluateStrings(\n args: StringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStrings(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class PairwiseStringEvaluator extends EvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: PairwiseStringEvaluatorArgs,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n return this._evaluateStringPairs(args, config);\n }\n}\n\n/**\n * Compare the output of two models (or two outputs of the same model).\n */\nexport abstract class LLMPairwiseStringEvaluator extends LLMEvalChain {\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n abstract _evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate the output string pairs.\n * @param args\n * @param callOptions\n * @param config\n * @return A dictionary containing the preference, scores, and/or other information.\n */\n evaluateStringPairs(\n args: LLMPairwiseStringEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateStringPairs(args, callOptions, config);\n }\n}\n\n/**\n * Interface for evaluating agent trajectories.\n */\nexport abstract class AgentTrajectoryEvaluator extends LLMEvalChain {\n requiresInput = true;\n\n /**\n * The name of the evaluation.\n */\n evaluationName?: string = this.constructor.name;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n abstract _evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues>;\n\n /**\n * Evaluate a trajectory.\n * @return The evaluation result.\n * @param args\n * @param callOptions\n * @param config\n */\n evaluateAgentTrajectory(\n args: LLMTrajectoryEvaluatorArgs,\n callOptions?: ExtractLLMCallOptions<this[\"llm\"]>,\n config?: Callbacks | BaseCallbackConfig\n ): Promise<ChainValues> {\n this.checkEvaluationArgs(args.reference, args.input);\n return this._evaluateAgentTrajectory(args, callOptions, config);\n }\n}\n"],"mappings":";;;;;;;;;;;AAgCA,MAAa,QAAQ,CAACA,IAAiBC,OACrC,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAG,EAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;;;;AAUxD,IAAsB,eAAtB,cAGU,SAAe;CACvB,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBC,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;AAKD,IAAsB,YAAtB,cAGU,UAA+B;CACvC,gBAA0B;CAE1B,oBAA8B;CAE9B,mBAA4B,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;CAEhG,uBAAgC,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,wBAAwB,CAAC;;;;;;;CAQxG,oBAAoBD,WAAoBC,OAAsB;AAC5D,MAAI,KAAK,iBAAiB,SAAS,KACjC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0BAA0B,CAAC;WAC3D,SAAS,QAAQ,CAAC,KAAK,eAChC,QAAQ,KAAK,KAAK,iBAAiB;AAErC,MAAI,KAAK,qBAAqB,aAAa,KACzC,OAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,6BAA6B,CAAC;WAC9D,aAAa,QAAQ,CAAC,KAAK,mBACpC,QAAQ,KAAK,KAAK,qBAAqB;CAE1C;AACF;;;;;AAqDD,IAAsB,qBAAtB,cAGU,aAAmB;;;;CAI3B,iBAA0B,KAAK,YAAY;;;;;;;;;;;CA2B3C,gBACEC,MACAC,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;;AAMD,IAAsB,kBAAtB,cAA8C,UAAU;;;;CAItD,iBAA0B,KAAK,YAAY;;;;;;;;;;CAyB3C,gBACEC,MACAD,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,iBAAiB,MAAM,OAAO;CAC3C;AACF;;;;AAKD,IAAsB,0BAAtB,cAAsD,UAAU;;;;CAI9D,iBAA0B,KAAK,YAAY;;;;;;;CAmB3C,oBACEE,MACAF,QACsB;AACtB,SAAO,KAAK,qBAAqB,MAAM,OAAO;CAC/C;AACF;;;;AAKD,IAAsB,6BAAtB,cAAyD,aAAa;;;;CAIpE,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,oBACEG,MACAC,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,qBAAqB,MAAM,aAAa,OAAO;CAC5D;AACF;;;;AAKD,IAAsB,2BAAtB,cAAuD,aAAa;CAClE,gBAAgB;;;;CAKhB,iBAA0B,KAAK,YAAY;;;;;;;;CAsB3C,wBACEK,MACAD,aACAJ,QACsB;EACtB,KAAK,oBAAoB,KAAK,WAAW,KAAK,MAAM;AACpD,SAAO,KAAK,yBAAyB,MAAM,aAAa,OAAO;CAChE;AACF"}
|
|
@@ -6,7 +6,7 @@ import { ChatGeneration, Generation } from "@langchain/core/outputs";
|
|
|
6
6
|
import { BaseCallbackConfig, Callbacks } from "@langchain/core/callbacks/manager";
|
|
7
7
|
import { BaseLLMOutputParser } from "@langchain/core/output_parsers";
|
|
8
8
|
import { ChainValues } from "@langchain/core/utils/types";
|
|
9
|
-
import * as
|
|
9
|
+
import * as _langchain_core_prompt_values4 from "@langchain/core/prompt_values";
|
|
10
10
|
|
|
11
11
|
//#region src/evaluation/comparison/pairwise.d.ts
|
|
12
12
|
/**
|
|
@@ -30,7 +30,7 @@ declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {
|
|
|
30
30
|
skipReferenceWarning: string;
|
|
31
31
|
outputParser: PairwiseStringResultOutputParser;
|
|
32
32
|
static resolvePairwiseCriteria(criteria?: CriteriaLike): Record<string, string>;
|
|
33
|
-
static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any,
|
|
33
|
+
static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values4.BasePromptValueInterface, any>;
|
|
34
34
|
/**
|
|
35
35
|
* Create a new instance of the PairwiseStringEvalChain.
|
|
36
36
|
* @param llm
|
|
@@ -49,7 +49,7 @@ declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {
|
|
|
49
49
|
declare class LabeledPairwiseStringEvalChain extends PairwiseStringEvalChain {
|
|
50
50
|
static lc_name(): string;
|
|
51
51
|
requiresReference: boolean;
|
|
52
|
-
static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any,
|
|
52
|
+
static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values4.BasePromptValueInterface, any>;
|
|
53
53
|
}
|
|
54
54
|
//#endregion
|
|
55
55
|
export { LabeledPairwiseStringEvalChain, PairwiseStringEvalChain, PairwiseStringResultOutputParser };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairwise.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMPairwiseStringEvaluator","LLMPairwiseStringEvaluatorArgs","ExtractLLMCallOptions","CriteriaLike","PairwiseStringResultOutputParser","Promise","PairwiseStringEvalChain","Record","
|
|
1
|
+
{"version":3,"file":"pairwise.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMPairwiseStringEvaluator","LLMPairwiseStringEvaluatorArgs","ExtractLLMCallOptions","CriteriaLike","PairwiseStringResultOutputParser","Promise","PairwiseStringEvalChain","Record","_langchain_core_prompt_values4","BasePromptValueInterface","Omit","Partial","LabeledPairwiseStringEvalChain"],"sources":["../../../src/evaluation/comparison/pairwise.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { EvalOutputType, LLMEvalChainInput, LLMPairwiseStringEvaluator, LLMPairwiseStringEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\nimport { CriteriaLike } from \"../criteria/criteria.js\";\n/**\n * A parser for the output of the PairwiseStringEvalChain.\n */\nexport declare class PairwiseStringResultOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n static lc_name(): string;\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\n/**\n * A chain for comparing two outputs, such as the outputs\n * of two models, prompts, or outputs of a single model on similar inputs.\n */\nexport declare class PairwiseStringEvalChain extends LLMPairwiseStringEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n skipReferenceWarning: string;\n outputParser: PairwiseStringResultOutputParser;\n static resolvePairwiseCriteria(criteria?: CriteriaLike): Record<string, string>;\n static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Create a new instance of the PairwiseStringEvalChain.\n * @param llm\n * @param criteria The criteria to use for evaluation.\n * @param chainOptions Options to pass to the chain.\n */\n static fromLLM(llm: BaseLanguageModelInterface, criteria?: CriteriaLike, chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<PairwiseStringEvalChain>;\n _prepareOutput(result: ChainValues): any;\n _evaluateStringPairs(args: LLMPairwiseStringEvaluatorArgs, callOptions: ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n/**\n * A chain for comparing two outputs, such as the outputs\n * of two models, prompts, or outputs of a single model on similar inputs,\n * with labeled preferences.\n */\nexport declare class LabeledPairwiseStringEvalChain extends PairwiseStringEvalChain {\n static lc_name(): string;\n requiresReference: boolean;\n static resolvePairwisePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n}\n//# sourceMappingURL=pairwise.d.ts.map"],"mappings":";;;;;;;;;;;;;;AAWqBc,cAAAA,gCAAAA,SAAyCb,mBAAT,CAA6BO,cAA7B,CAAA,CAAA;EAA6BA,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAGrDJ,YAAAA,EAAAA,MAAAA,EAAAA;EAAeD,WAAAA,CAAAA,WAAAA,EAAfC,UAAeD,EAAAA,GAAAA,cAAAA,EAAAA,EAAAA,UAAAA,EAA8BG,SAA9BH,GAAAA,SAAAA,CAAAA,EAAsDY,OAAtDZ,CAA8DK,cAA9DL,CAAAA;;;;;AAHqC;AAS5Da,cAAAA,uBAAAA,SAAgCN,0BAAAA,CAAT;EAO1BI,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAC4BD,aAAAA,CAAAA,EAAAA,MAAAA;EAAeI,cAAAA,CAAAA,EAAAA,MAAAA;EACnBZ,aAAAA,EAAAA,OAAAA;EAAkBa,iBAAAA,EAAAA,OAAAA;EAAGb,oBAAAA,EAAAA,MAAAA;EAOvCL,YAAAA,EATNc,gCASMd;EAAuCa,OAAAA,uBAAAA,CAAAA,QAAAA,CAAAA,EARjBA,YAQiBA,CAAAA,EARFI,MAQEJ,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAA0CJ,OAAAA,qBAAAA,CAAAA,MAAAA,CAAAA,EAP/DJ,kBAO+DI,CAAAA,EAP1CJ,kBAO0CI,CAAAA,GAAAA,EAP7CS,8BAAAA,CAAmEC,wBAAAA,EAOtBV,GAAAA,CAAAA;EAALW;;;;;;EAExBR,OAAAA,OAAAA,CAAAA,GAAAA,EAFpDZ,0BAEoDY,EAAAA,QAAAA,CAAAA,EAFbC,YAEaD,EAAAA,YAAAA,CAAAA,EAFgBS,OAEhBT,CAFwBQ,IAExBR,CAF6BH,iBAE7BG,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAF0DG,OAE1DH,CAFkEI,uBAElEJ,CAAAA;EAA6CN,cAAAA,CAAAA,MAAAA,EAD9FJ,WAC8FI,CAAAA,EAAAA,GAAAA;EAAYC,oBAAAA,CAAAA,IAAAA,EAAtGI,8BAAsGJ,EAAAA,WAAAA,EAAzDK,qBAAyDL,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAZD,SAAYC,GAAAA,kBAAAA,CAAAA,EAAqBQ,OAArBR,CAA6BL,WAA7BK,CAAAA;;;;AAlBtD;AAyB/E;;AAG4DW,cAHvCI,8BAAAA,SAAuCN,uBAAAA,CAGmEG;EAAhEd,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAHHW,iBAAAA,EAAAA,OAAAA;EAAuB,OAAA,qBAAA,CAAA,MAAA,CAAA,EAGzCX,kBAHyC,CAAA,EAGpBA,kBAHoB,CAAA,GAAA,EAGvBa,8BAAAA,CAAmEC,wBAAAA,EAH5C,GAAA,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { ChatGeneration, Generation } from "@langchain/core/outputs";
|
|
|
6
6
|
import { BaseCallbackConfig, Callbacks } from "@langchain/core/callbacks/manager";
|
|
7
7
|
import { BaseLLMOutputParser } from "@langchain/core/output_parsers";
|
|
8
8
|
import { ChainValues } from "@langchain/core/utils/types";
|
|
9
|
-
import * as
|
|
9
|
+
import * as _langchain_core_prompt_values2 from "@langchain/core/prompt_values";
|
|
10
10
|
|
|
11
11
|
//#region src/evaluation/criteria/criteria.d.ts
|
|
12
12
|
/**
|
|
@@ -50,7 +50,7 @@ declare class CriteriaEvalChain extends LLMStringEvaluator {
|
|
|
50
50
|
* Resolve the prompt to use for the evaluation.
|
|
51
51
|
* @param prompt
|
|
52
52
|
*/
|
|
53
|
-
static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any,
|
|
53
|
+
static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values2.BasePromptValueInterface, any>;
|
|
54
54
|
/**
|
|
55
55
|
* Create a new instance of the CriteriaEvalChain.
|
|
56
56
|
* @param llm
|
|
@@ -76,7 +76,7 @@ declare class CriteriaEvalChain extends LLMStringEvaluator {
|
|
|
76
76
|
declare class LabeledCriteriaEvalChain extends CriteriaEvalChain {
|
|
77
77
|
static lc_name(): string;
|
|
78
78
|
requiresReference: boolean;
|
|
79
|
-
static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any,
|
|
79
|
+
static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, _langchain_core_prompt_values2.BasePromptValueInterface, any>;
|
|
80
80
|
}
|
|
81
81
|
//#endregion
|
|
82
82
|
export { Criteria, CriteriaEvalChain, CriteriaEvalInput, CriteriaLike, CriteriaResultOutputParser, LabeledCriteriaEvalChain };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMStringEvaluator","StringEvaluatorArgs","ExtractLLMCallOptions","ConstitutionalPrinciple","Criteria","CriteriaLike","CriteriaResultOutputParser","Promise","CriteriaEvalInput","CriteriaEvalChain","Record","
|
|
1
|
+
{"version":3,"file":"criteria.d.ts","names":["BaseLanguageModelInterface","BaseLLMOutputParser","ChainValues","ChatGeneration","Generation","BasePromptTemplate","Callbacks","BaseCallbackConfig","EvalOutputType","LLMEvalChainInput","LLMStringEvaluator","StringEvaluatorArgs","ExtractLLMCallOptions","ConstitutionalPrinciple","Criteria","CriteriaLike","CriteriaResultOutputParser","Promise","CriteriaEvalInput","CriteriaEvalChain","Record","_langchain_core_prompt_values2","BasePromptValueInterface","Omit","Partial","input","prediction","reference","LabeledCriteriaEvalChain"],"sources":["../../../src/evaluation/criteria/criteria.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { BaseLLMOutputParser } from \"@langchain/core/output_parsers\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { ChatGeneration, Generation } from \"@langchain/core/outputs\";\nimport { BasePromptTemplate } from \"@langchain/core/prompts\";\nimport { Callbacks, BaseCallbackConfig } from \"@langchain/core/callbacks/manager\";\nimport { EvalOutputType, LLMEvalChainInput, LLMStringEvaluator, StringEvaluatorArgs, type ExtractLLMCallOptions } from \"../base.js\";\nimport { ConstitutionalPrinciple } from \"../../chains/constitutional_ai/constitutional_principle.js\";\n/**\n * A Criteria to evaluate.\n */\nexport type Criteria = \"conciseness\" | \"relevance\" | \"correctness\" | \"coherence\" | \"harmfulness\" | \"maliciousness\" | \"helpfulness\" | \"controversiality\" | \"misogyny\" | \"criminality\" | \"insensitivity\" | \"depth\" | \"creativity\" | \"detail\";\nexport type CriteriaLike = {\n [key: string]: string;\n} | Criteria | ConstitutionalPrinciple;\n/**\n * A parser for the output of the CriteriaEvalChain.\n */\nexport declare class CriteriaResultOutputParser extends BaseLLMOutputParser<EvalOutputType> {\n lc_namespace: string[];\n parseResult(generations: Generation[] | ChatGeneration[], _callbacks: Callbacks | undefined): Promise<EvalOutputType>;\n}\nexport interface CriteriaEvalInput {\n input?: string;\n output: string;\n reference?: string;\n}\nexport declare class CriteriaEvalChain extends LLMStringEvaluator {\n static lc_name(): string;\n criterionName?: string;\n evaluationName?: string;\n requiresInput: boolean;\n requiresReference: boolean;\n skipReferenceWarning: string;\n outputParser: BaseLLMOutputParser<EvalOutputType>;\n /**\n * Resolve the criteria to evaluate.\n * @param criteria The criteria to evaluate the runs against. It can be:\n * - a mapping of a criterion name to its description\n * - a single criterion name present in one of the default criteria\n * - a single `ConstitutionalPrinciple` instance\n *\n * @return A dictionary mapping criterion names to descriptions.\n */\n static resolveCriteria(criteria?: CriteriaLike): Record<string, string>;\n /**\n * Resolve the prompt to use for the evaluation.\n * @param prompt\n */\n static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n /**\n * Create a new instance of the CriteriaEvalChain.\n * @param llm\n * @param criteria\n * @param chainOptions Options to pass to the constructor of the LLMChain.\n */\n static fromLLM(llm: BaseLanguageModelInterface, criteria?: CriteriaLike, chainOptions?: Partial<Omit<LLMEvalChainInput, \"llm\">>): Promise<CriteriaEvalChain>;\n getEvalInput({ input, prediction, reference }: StringEvaluatorArgs): CriteriaEvalInput;\n /**\n * Prepare the output of the evaluation.\n * @param result\n */\n _prepareOutput(result: ChainValues): any;\n _evaluateStrings(args: StringEvaluatorArgs & ExtractLLMCallOptions<this[\"llm\"]>, config?: Callbacks | BaseCallbackConfig): Promise<ChainValues>;\n}\n/**\n * Criteria evaluation chain that requires references.\n */\nexport declare class LabeledCriteriaEvalChain extends CriteriaEvalChain {\n static lc_name(): string;\n requiresReference: boolean;\n static resolvePrompt(prompt?: BasePromptTemplate): BasePromptTemplate<any, import(\"@langchain/core/prompt_values\").BasePromptValueInterface, any>;\n}\n//# sourceMappingURL=criteria.d.ts.map"],"mappings":";;;;;;;;;;;;;;AAWYc,KAAAA,QAAAA,GAAQ,aAAA,GAAA,WAAA,GAAA,aAAA,GAAA,WAAA,GAAA,aAAA,GAAA,eAAA,GAAA,aAAA,GAAA,kBAAA,GAAA,UAAA,GAAA,aAAA,GAAA,eAAA,GAAA,OAAA,GAAA,YAAA,GAAA,QAAA;AACRC,KAAAA,YAAAA,GAAY;EAMHC,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;CAAuDR,GAJxEM,QAIwEN,GAJ7DK,uBAI6DL;;;;AAE8BA,cAFrFQ,0BAAAA,SAAmCf,mBAEkDO,CAF9BA,cAE8BA,CAAAA,CAAAA;EAARS,YAAAA,EAAAA,MAAAA,EAAAA;EAF1ChB,WAAAA,CAAAA,WAAAA,EAE3BG,UAF2BH,EAAAA,GAEZE,cAFYF,EAAAA,EAAAA,UAAAA,EAEkBK,SAFlBL,GAAAA,SAAAA,CAAAA,EAE0CgB,OAF1ChB,CAEkDO,cAFlDP,CAAAA;AAAmB;AAI1DiB,UAAAA,iBAAAA,CAAiB;EAKbC,KAAAA,CAAAA,EAAAA,MAAAA;EAOiBX,MAAAA,EAAAA,MAAAA;EAApBP,SAAAA,CAAAA,EAAAA,MAAAA;;AAUmCmB,cAjBhCD,iBAAAA,SAA0BT,kBAAAA,CAiBMU;EAKnBf,OAAAA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAkBgB,aAAAA,CAAAA,EAAAA,MAAAA;EAAGhB,cAAAA,CAAAA,EAAAA,MAAAA;EAO/BL,aAAAA,EAAAA,OAAAA;EAAuCe,iBAAAA,EAAAA,OAAAA;EAA0CN,oBAAAA,EAAAA,MAAAA;EAALc,YAAAA,EAtBlFtB,mBAsBkFsB,CAtB9Df,cAsB8De,CAAAA;EAARC;;;;;;;;;EAOjEb,OAAAA,eAAAA,CAAAA,QAAAA,CAAAA,EAnBWI,YAmBXJ,CAAAA,EAnB0BS,MAmB1BT,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAAsBC;;;;EAA8EK,OAAAA,aAAAA,CAAAA,MAAAA,CAAAA,EAd7FZ,kBAc6FY,CAAAA,EAdxEZ,kBAcwEY,CAAAA,GAAAA,EAd3EI,8BAAAA,CAAmEC,wBAAAA,EAcQL,GAAAA,CAAAA;EApChFP;AAAkB;AAyCjE;;;;EAAsDS,OAAAA,OAAAA,CAAAA,GAAAA,EAZ9BnB,0BAY8BmB,EAAAA,QAAAA,CAAAA,EAZSJ,YAYTI,EAAAA,YAAAA,CAAAA,EAZsCK,OAYtCL,CAZ8CI,IAY9CJ,CAZmDV,iBAYnDU,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAZgFF,OAYhFE,CAZwFA,iBAYxFA,CAAAA;EAAiB,YAAA,CAAA;IAAA,KAAA;IAAA,UAAA;IAAA;EAAA,CAAA,EAXpBR,mBAWoB,CAAA,EAXEO,iBAWF;;;;;yBAN5ChB;yBACAS,sBAAsBC,6CAA6CN,YAAYC,qBAAqBU,QAAQf;;;;;cAKlH0B,wBAAAA,SAAiCT,iBAAAA;;;gCAGpBd,qBAAqBA,wBAAHgB,8BAAAA,CAAmEC,wBAAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ObjectTool } from "./schema.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
3
3
|
import { BaseMessage } from "@langchain/core/messages";
|
|
4
4
|
import { PartialValues } from "@langchain/core/utils/types";
|
|
5
5
|
import { BaseChatPromptTemplate, SerializedBasePromptTemplate } from "@langchain/core/prompts";
|
|
@@ -54,7 +54,7 @@ declare class AutoGPTPrompt extends BaseChatPromptTemplate implements AutoGPTPro
|
|
|
54
54
|
memory: VectorStoreRetrieverInterface;
|
|
55
55
|
messages: BaseMessage[];
|
|
56
56
|
user_input: string;
|
|
57
|
-
}): Promise<BaseMessage<
|
|
57
|
+
}): Promise<BaseMessage<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>[]>;
|
|
58
58
|
/**
|
|
59
59
|
* This method is not implemented in the AutoGPTPrompt class and will
|
|
60
60
|
* throw an error if called.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.cts","names":["VectorStoreRetrieverInterface","BaseChatPromptTemplate","SerializedBasePromptTemplate","BaseMessage","PartialValues","ObjectTool","AutoGPTPromptInput","Promise","AutoGPTPrompt","goals","memory","previousMessages","user_input","
|
|
1
|
+
{"version":3,"file":"prompt.d.cts","names":["VectorStoreRetrieverInterface","BaseChatPromptTemplate","SerializedBasePromptTemplate","BaseMessage","PartialValues","ObjectTool","AutoGPTPromptInput","Promise","AutoGPTPrompt","goals","memory","previousMessages","user_input","_langchain_core_messages0","MessageToolSet","MessageStructure","MessageType"],"sources":["../../../src/experimental/autogpt/prompt.d.ts"],"sourcesContent":["import type { VectorStoreRetrieverInterface } from \"@langchain/core/vectorstores\";\nimport { BaseChatPromptTemplate, SerializedBasePromptTemplate } from \"@langchain/core/prompts\";\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport { PartialValues } from \"@langchain/core/utils/types\";\nimport { ObjectTool } from \"./schema.js\";\n/**\n * Interface for the input parameters of the AutoGPTPrompt class.\n */\nexport interface AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit?: number;\n}\n/**\n * Class used to generate prompts for the AutoGPT model. It takes into\n * account the AI's name, role, tools, token counter, and send token\n * limit. The class also handles the formatting of messages and the\n * construction of the full prompt.\n */\nexport declare class AutoGPTPrompt extends BaseChatPromptTemplate implements AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit: number;\n constructor(fields: AutoGPTPromptInput);\n _getPromptType(): \"autogpt\";\n /**\n * Constructs the full prompt based on the provided goals.\n * @param goals An array of goals.\n * @returns The full prompt as a string.\n */\n constructFullPrompt(goals: string[]): string;\n /**\n * Formats the messages based on the provided parameters.\n * @param goals An array of goals.\n * @param memory A VectorStoreRetriever instance.\n * @param messages An array of previous messages.\n * @param user_input The user's input.\n * @returns An array of formatted messages.\n */\n formatMessages({ goals, memory, messages: previousMessages, user_input }: {\n goals: string[];\n memory: VectorStoreRetrieverInterface;\n messages: BaseMessage[];\n user_input: string;\n }): Promise<BaseMessage<import(\"@langchain/core/messages\").MessageStructure<import(\"@langchain/core/messages\").MessageToolSet>, import(\"@langchain/core/messages\").MessageType>[]>;\n /**\n * This method is not implemented in the AutoGPTPrompt class and will\n * throw an error if called.\n * @param _values Partial values.\n * @returns Throws an error.\n */\n partial(_values: PartialValues): Promise<BaseChatPromptTemplate>;\n serialize(): SerializedBasePromptTemplate;\n}\n//# sourceMappingURL=prompt.d.ts.map"],"mappings":";;;;;;;;;;;AAQiBM,UAAAA,kBAAAA,CAAkB;EAadE,MAAAA,EAAAA,MAAAA;EAGVH,MAAAA,EAAAA,MAAAA;EACyBE,KAAAA,EAdzBF,UAcyBE,EAAAA;EAEZD,YAAAA,EAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAAA,GAfYC,OAeZD,CAAAA,MAAAA,CAAAA;EAgBHG,cAAAA,CAAAA,EAAAA,MAAAA;;;;;;;;AAK0DI,cA3B1DL,aAAAA,SAAsBP,sBAAAA,YAAkCK,kBA2B0FU,CAAAA;EAAvJb,MAAAA,EAAAA,MAAAA;EAARI,MAAAA,EAAAA,MAAAA;EAOaH,KAAAA,EA/BVC,UA+BUD,EAAAA;EAAwBH,YAAAA,EAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAAA,GA9BTM,OA8BSN,CAAAA,MAAAA,CAAAA;EAARM,cAAAA,EAAAA,MAAAA;EACpBL,WAAAA,CAAAA,MAAAA,EA7BOI,kBA6BPJ;EAnC0BD,cAAAA,CAAAA,CAAAA,EAAAA,SAAAA;EAAkCK;AAAkB;;;;;;;;;;;;;;;;cAsBjDK;;;;YAE9BX;cACEG;;MAEVI,QAAQJ,YAAiHU,yBAAAA,CAAlEE,iBAFlCF,yBAAAA,CAEsFC,cAAAA,GAApCD,yBAAAA,CAAwFG,WAAAA;;;;;;;mBAOlJZ,gBAAgBG,QAAQN;eAC5BC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ObjectTool } from "./schema.js";
|
|
2
2
|
import { BaseChatPromptTemplate, SerializedBasePromptTemplate } from "@langchain/core/prompts";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _langchain_core_messages3 from "@langchain/core/messages";
|
|
4
4
|
import { BaseMessage } from "@langchain/core/messages";
|
|
5
5
|
import { PartialValues } from "@langchain/core/utils/types";
|
|
6
6
|
import { VectorStoreRetrieverInterface } from "@langchain/core/vectorstores";
|
|
@@ -54,7 +54,7 @@ declare class AutoGPTPrompt extends BaseChatPromptTemplate implements AutoGPTPro
|
|
|
54
54
|
memory: VectorStoreRetrieverInterface;
|
|
55
55
|
messages: BaseMessage[];
|
|
56
56
|
user_input: string;
|
|
57
|
-
}): Promise<BaseMessage<
|
|
57
|
+
}): Promise<BaseMessage<_langchain_core_messages3.MessageStructure<_langchain_core_messages3.MessageToolSet>, _langchain_core_messages3.MessageType>[]>;
|
|
58
58
|
/**
|
|
59
59
|
* This method is not implemented in the AutoGPTPrompt class and will
|
|
60
60
|
* throw an error if called.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","names":["VectorStoreRetrieverInterface","BaseChatPromptTemplate","SerializedBasePromptTemplate","BaseMessage","PartialValues","ObjectTool","AutoGPTPromptInput","Promise","AutoGPTPrompt","goals","memory","previousMessages","user_input","
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","names":["VectorStoreRetrieverInterface","BaseChatPromptTemplate","SerializedBasePromptTemplate","BaseMessage","PartialValues","ObjectTool","AutoGPTPromptInput","Promise","AutoGPTPrompt","goals","memory","previousMessages","user_input","_langchain_core_messages3","MessageToolSet","MessageStructure","MessageType"],"sources":["../../../src/experimental/autogpt/prompt.d.ts"],"sourcesContent":["import type { VectorStoreRetrieverInterface } from \"@langchain/core/vectorstores\";\nimport { BaseChatPromptTemplate, SerializedBasePromptTemplate } from \"@langchain/core/prompts\";\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport { PartialValues } from \"@langchain/core/utils/types\";\nimport { ObjectTool } from \"./schema.js\";\n/**\n * Interface for the input parameters of the AutoGPTPrompt class.\n */\nexport interface AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit?: number;\n}\n/**\n * Class used to generate prompts for the AutoGPT model. It takes into\n * account the AI's name, role, tools, token counter, and send token\n * limit. The class also handles the formatting of messages and the\n * construction of the full prompt.\n */\nexport declare class AutoGPTPrompt extends BaseChatPromptTemplate implements AutoGPTPromptInput {\n aiName: string;\n aiRole: string;\n tools: ObjectTool[];\n tokenCounter: (text: string) => Promise<number>;\n sendTokenLimit: number;\n constructor(fields: AutoGPTPromptInput);\n _getPromptType(): \"autogpt\";\n /**\n * Constructs the full prompt based on the provided goals.\n * @param goals An array of goals.\n * @returns The full prompt as a string.\n */\n constructFullPrompt(goals: string[]): string;\n /**\n * Formats the messages based on the provided parameters.\n * @param goals An array of goals.\n * @param memory A VectorStoreRetriever instance.\n * @param messages An array of previous messages.\n * @param user_input The user's input.\n * @returns An array of formatted messages.\n */\n formatMessages({ goals, memory, messages: previousMessages, user_input }: {\n goals: string[];\n memory: VectorStoreRetrieverInterface;\n messages: BaseMessage[];\n user_input: string;\n }): Promise<BaseMessage<import(\"@langchain/core/messages\").MessageStructure<import(\"@langchain/core/messages\").MessageToolSet>, import(\"@langchain/core/messages\").MessageType>[]>;\n /**\n * This method is not implemented in the AutoGPTPrompt class and will\n * throw an error if called.\n * @param _values Partial values.\n * @returns Throws an error.\n */\n partial(_values: PartialValues): Promise<BaseChatPromptTemplate>;\n serialize(): SerializedBasePromptTemplate;\n}\n//# sourceMappingURL=prompt.d.ts.map"],"mappings":";;;;;;;;;;;AAQiBM,UAAAA,kBAAAA,CAAkB;EAadE,MAAAA,EAAAA,MAAAA;EAGVH,MAAAA,EAAAA,MAAAA;EACyBE,KAAAA,EAdzBF,UAcyBE,EAAAA;EAEZD,YAAAA,EAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAAA,GAfYC,OAeZD,CAAAA,MAAAA,CAAAA;EAgBHG,cAAAA,CAAAA,EAAAA,MAAAA;;;;;;;;AAK0DI,cA3B1DL,aAAAA,SAAsBP,sBAAAA,YAAkCK,kBA2B0FU,CAAAA;EAAvJb,MAAAA,EAAAA,MAAAA;EAARI,MAAAA,EAAAA,MAAAA;EAOaH,KAAAA,EA/BVC,UA+BUD,EAAAA;EAAwBH,YAAAA,EAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAAA,GA9BTM,OA8BSN,CAAAA,MAAAA,CAAAA;EAARM,cAAAA,EAAAA,MAAAA;EACpBL,WAAAA,CAAAA,MAAAA,EA7BOI,kBA6BPJ;EAnC0BD,cAAAA,CAAAA,CAAAA,EAAAA,SAAAA;EAAkCK;AAAkB;;;;;;;;;;;;;;;;cAsBjDK;;;;YAE9BX;cACEG;;MAEVI,QAAQJ,YAAiHU,yBAAAA,CAAlEE,iBAFlCF,yBAAAA,CAEsFC,cAAAA,GAApCD,yBAAAA,CAAwFG,WAAAA;;;;;;;mBAOlJZ,gBAAgBG,QAAQN;eAC5BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regex_masking_transformer.cjs","names":["MaskingTransformer","patterns: { [key: string]: MaskingPattern }","hashFunction?: HashFunction","message: string","state: Map<string, string>","input: string"],"sources":["../../../src/experimental/masking/regex_masking_transformer.ts"],"sourcesContent":["import { MaskingTransformer } from \"./transformer.js\";\nimport type { HashFunction, MaskingPattern } from \"./types.js\";\n/**\n * RegexMaskingTransformer class for masking and rehydrating messages with Regex.\n */\nexport class RegexMaskingTransformer extends MaskingTransformer {\n private patterns: { [key: string]: MaskingPattern };\n\n private hashFunction: HashFunction;\n\n /**\n * Constructs a RegexMaskingTransformer with given patterns and an optional hash function.\n * Validates the provided patterns to ensure they conform to the expected structure.\n *\n * @param patterns - An object containing masking patterns. Each pattern should include\n * a regular expression (`regex`) and optionally a `replacement` string\n * or a `mask` function.\n * @param hashFunction - An optional custom hash function to be used for masking.\n */\n constructor(\n patterns: { [key: string]: MaskingPattern },\n hashFunction?: HashFunction\n ) {\n super();\n // Validates the provided masking patterns before initializing the transformer.\n // This ensures that each pattern has a valid regular expression.\n this.validatePatterns(patterns);\n\n // Assigns the validated patterns and the hash function to the transformer.\n // If no custom hash function is provided, the default hash function is used.\n this.patterns = patterns;\n this.hashFunction = hashFunction || this.defaultHashFunction;\n }\n\n /**\n * Validates the given masking patterns to ensure each pattern has a valid regular expression.\n * Throws an error if any pattern is found to be invalid.\n *\n * @param patterns - The patterns object to validate.\n */\n private validatePatterns(patterns: { [key: string]: MaskingPattern }) {\n for (const key of Object.keys(patterns)) {\n const pattern = patterns[key];\n // Checks that each pattern is an object and has a regex property that is an instance of RegExp.\n // Throws an error if these conditions are not met, indicating an invalid pattern configuration.\n if (\n !pattern ||\n typeof pattern !== \"object\" ||\n // eslint-disable-next-line no-instanceof/no-instanceof\n !(pattern.regex instanceof RegExp)\n ) {\n throw new Error(\"Invalid pattern configuration.\");\n }\n }\n }\n\n /**\n * Masks content in a message based on the defined patterns.\n * @param message - The message to be masked.\n * @param state - The current state containing original values.\n * @returns A tuple of the masked message and the updated state.\n */\n async transform(\n message: string,\n state: Map<string, string>\n ): Promise<[string, Map<string, string>]> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Holds the progressively masked message\n let processedMessage = message;\n\n // Initialize original values map with the current state or a new map\n const originalValues = state || new Map<string, string>();\n\n // Iterate over each pattern defined in the transformer\n for (const key of Object.keys(this.patterns)) {\n const pattern = this.patterns[key];\n\n // Apply the current pattern's regex to the message\n processedMessage = processedMessage.replace(pattern.regex, (match) => {\n // Determine the masked value: use the mask function if provided, else use the replacement string,\n // else use the hash function.\n const maskedValue = pattern.mask\n ? pattern.mask(match)\n : pattern.replacement ?? this.hashFunction(match);\n\n // Store the mapping of the masked value to the original value (match)\n originalValues.set(maskedValue, match);\n\n // Return the masked value to replace the original value in the message\n return maskedValue;\n });\n }\n\n // Return the fully masked message and the state map with all original values\n // Wrap the synchronous return values in Promise.resolve() to maintain compatibility\n // with the MaskingParser's expectation of a Promise return type.\n return [processedMessage, originalValues];\n }\n\n /**\n * Rehydrates a masked message back to its original form using the provided state.\n * @param message - The masked message to be rehydrated.\n * @param state - The state map containing mappings of masked values to their original values.\n * @returns The rehydrated (original) message.\n */\n async rehydrate(\n message: string,\n state: Map<string, string>\n ): Promise<string> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Convert the state map to an array and use reduce to sequentially replace masked values with original values.\n const rehydratedMessage = Array.from(state).reduce(\n (msg, [masked, original]) => {\n // Escape special characters in the masked string to ensure it can be used in a regular expression safely.\n // This is necessary because masked values might contain characters that have special meanings in regex.\n const escapedMasked = masked.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Replace all instances of the escaped masked value in the message with the original value.\n // The 'g' flag in the RegExp ensures that all occurrences of the masked value are replaced.\n return msg.replace(new RegExp(escapedMasked, \"g\"), original);\n },\n message\n );\n\n return rehydratedMessage;\n }\n\n /**\n * Default hash function for creating unique hash values.\n * @param input - The input string to hash.\n * @returns The resulting hash as a string.\n */\n private defaultHashFunction(input: string): string {\n let hash = 0;\n // Iterate over each character in the input string\n for (let i = 0; i < input.length; i += 1) {\n // Get ASCII value of the character\n const char = input.charCodeAt(i);\n // Combine the current hash with the new character and ensure it remains a 32-bit integer\n hash = (hash << 5) - hash + char;\n // Bitwise OR operation to convert to a 32-bit integer.\n // This is a common technique to ensure the final hash value stays within the 32-bit limit,\n // effectively wrapping the value when it becomes too large.\n hash |= 0;\n }\n\n // Convert the numerical hash value to a string and return\n return hash.toString();\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,0BAAb,cAA6CA,uCAAmB;CAC9D,AAAQ;CAER,AAAQ;;;;;;;;;;CAWR,YACEC,UACAC,cACA;EACA,OAAO;EAGP,KAAK,iBAAiB,SAAS;EAI/B,KAAK,WAAW;EAChB,KAAK,eAAe,gBAAgB,KAAK;CAC1C;;;;;;;CAQD,AAAQ,iBAAiBD,UAA6C;AACpE,OAAK,MAAM,OAAO,OAAO,KAAK,SAAS,EAAE;GACvC,MAAM,UAAU,SAAS;AAGzB,OACE,CAAC,WACD,OAAO,YAAY,YAEnB,EAAE,QAAQ,iBAAiB,QAE3B,OAAM,IAAI,MAAM;EAEnB;CACF;;;;;;;CAQD,MAAM,UACJE,SACAC,OACwC;AACxC,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,UACR;AAKJ,MAAI,EAAE,iBAAiB,KACrB,OAAM,IAAI,UACR;EAKJ,IAAI,mBAAmB;EAGvB,MAAM,iBAAiB,yBAAS,IAAI;AAGpC,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,SAAS,EAAE;GAC5C,MAAM,UAAU,KAAK,SAAS;GAG9B,mBAAmB,iBAAiB,QAAQ,QAAQ,OAAO,CAAC,UAAU;IAGpE,MAAM,cAAc,QAAQ,OACxB,QAAQ,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"regex_masking_transformer.cjs","names":["MaskingTransformer","patterns: { [key: string]: MaskingPattern }","hashFunction?: HashFunction","message: string","state: Map<string, string>","input: string"],"sources":["../../../src/experimental/masking/regex_masking_transformer.ts"],"sourcesContent":["import { MaskingTransformer } from \"./transformer.js\";\nimport type { HashFunction, MaskingPattern } from \"./types.js\";\n/**\n * RegexMaskingTransformer class for masking and rehydrating messages with Regex.\n */\nexport class RegexMaskingTransformer extends MaskingTransformer {\n private patterns: { [key: string]: MaskingPattern };\n\n private hashFunction: HashFunction;\n\n /**\n * Constructs a RegexMaskingTransformer with given patterns and an optional hash function.\n * Validates the provided patterns to ensure they conform to the expected structure.\n *\n * @param patterns - An object containing masking patterns. Each pattern should include\n * a regular expression (`regex`) and optionally a `replacement` string\n * or a `mask` function.\n * @param hashFunction - An optional custom hash function to be used for masking.\n */\n constructor(\n patterns: { [key: string]: MaskingPattern },\n hashFunction?: HashFunction\n ) {\n super();\n // Validates the provided masking patterns before initializing the transformer.\n // This ensures that each pattern has a valid regular expression.\n this.validatePatterns(patterns);\n\n // Assigns the validated patterns and the hash function to the transformer.\n // If no custom hash function is provided, the default hash function is used.\n this.patterns = patterns;\n this.hashFunction = hashFunction || this.defaultHashFunction;\n }\n\n /**\n * Validates the given masking patterns to ensure each pattern has a valid regular expression.\n * Throws an error if any pattern is found to be invalid.\n *\n * @param patterns - The patterns object to validate.\n */\n private validatePatterns(patterns: { [key: string]: MaskingPattern }) {\n for (const key of Object.keys(patterns)) {\n const pattern = patterns[key];\n // Checks that each pattern is an object and has a regex property that is an instance of RegExp.\n // Throws an error if these conditions are not met, indicating an invalid pattern configuration.\n if (\n !pattern ||\n typeof pattern !== \"object\" ||\n // eslint-disable-next-line no-instanceof/no-instanceof\n !(pattern.regex instanceof RegExp)\n ) {\n throw new Error(\"Invalid pattern configuration.\");\n }\n }\n }\n\n /**\n * Masks content in a message based on the defined patterns.\n * @param message - The message to be masked.\n * @param state - The current state containing original values.\n * @returns A tuple of the masked message and the updated state.\n */\n async transform(\n message: string,\n state: Map<string, string>\n ): Promise<[string, Map<string, string>]> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Holds the progressively masked message\n let processedMessage = message;\n\n // Initialize original values map with the current state or a new map\n const originalValues = state || new Map<string, string>();\n\n // Iterate over each pattern defined in the transformer\n for (const key of Object.keys(this.patterns)) {\n const pattern = this.patterns[key];\n\n // Apply the current pattern's regex to the message\n processedMessage = processedMessage.replace(pattern.regex, (match) => {\n // Determine the masked value: use the mask function if provided, else use the replacement string,\n // else use the hash function.\n const maskedValue = pattern.mask\n ? pattern.mask(match)\n : (pattern.replacement ?? this.hashFunction(match));\n\n // Store the mapping of the masked value to the original value (match)\n originalValues.set(maskedValue, match);\n\n // Return the masked value to replace the original value in the message\n return maskedValue;\n });\n }\n\n // Return the fully masked message and the state map with all original values\n // Wrap the synchronous return values in Promise.resolve() to maintain compatibility\n // with the MaskingParser's expectation of a Promise return type.\n return [processedMessage, originalValues];\n }\n\n /**\n * Rehydrates a masked message back to its original form using the provided state.\n * @param message - The masked message to be rehydrated.\n * @param state - The state map containing mappings of masked values to their original values.\n * @returns The rehydrated (original) message.\n */\n async rehydrate(\n message: string,\n state: Map<string, string>\n ): Promise<string> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Convert the state map to an array and use reduce to sequentially replace masked values with original values.\n const rehydratedMessage = Array.from(state).reduce(\n (msg, [masked, original]) => {\n // Escape special characters in the masked string to ensure it can be used in a regular expression safely.\n // This is necessary because masked values might contain characters that have special meanings in regex.\n const escapedMasked = masked.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Replace all instances of the escaped masked value in the message with the original value.\n // The 'g' flag in the RegExp ensures that all occurrences of the masked value are replaced.\n return msg.replace(new RegExp(escapedMasked, \"g\"), original);\n },\n message\n );\n\n return rehydratedMessage;\n }\n\n /**\n * Default hash function for creating unique hash values.\n * @param input - The input string to hash.\n * @returns The resulting hash as a string.\n */\n private defaultHashFunction(input: string): string {\n let hash = 0;\n // Iterate over each character in the input string\n for (let i = 0; i < input.length; i += 1) {\n // Get ASCII value of the character\n const char = input.charCodeAt(i);\n // Combine the current hash with the new character and ensure it remains a 32-bit integer\n hash = (hash << 5) - hash + char;\n // Bitwise OR operation to convert to a 32-bit integer.\n // This is a common technique to ensure the final hash value stays within the 32-bit limit,\n // effectively wrapping the value when it becomes too large.\n hash |= 0;\n }\n\n // Convert the numerical hash value to a string and return\n return hash.toString();\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,0BAAb,cAA6CA,uCAAmB;CAC9D,AAAQ;CAER,AAAQ;;;;;;;;;;CAWR,YACEC,UACAC,cACA;EACA,OAAO;EAGP,KAAK,iBAAiB,SAAS;EAI/B,KAAK,WAAW;EAChB,KAAK,eAAe,gBAAgB,KAAK;CAC1C;;;;;;;CAQD,AAAQ,iBAAiBD,UAA6C;AACpE,OAAK,MAAM,OAAO,OAAO,KAAK,SAAS,EAAE;GACvC,MAAM,UAAU,SAAS;AAGzB,OACE,CAAC,WACD,OAAO,YAAY,YAEnB,EAAE,QAAQ,iBAAiB,QAE3B,OAAM,IAAI,MAAM;EAEnB;CACF;;;;;;;CAQD,MAAM,UACJE,SACAC,OACwC;AACxC,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,UACR;AAKJ,MAAI,EAAE,iBAAiB,KACrB,OAAM,IAAI,UACR;EAKJ,IAAI,mBAAmB;EAGvB,MAAM,iBAAiB,yBAAS,IAAI;AAGpC,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,SAAS,EAAE;GAC5C,MAAM,UAAU,KAAK,SAAS;GAG9B,mBAAmB,iBAAiB,QAAQ,QAAQ,OAAO,CAAC,UAAU;IAGpE,MAAM,cAAc,QAAQ,OACxB,QAAQ,KAAK,MAAM,GAClB,QAAQ,eAAe,KAAK,aAAa,MAAM;IAGpD,eAAe,IAAI,aAAa,MAAM;AAGtC,WAAO;GACR,EAAC;EACH;AAKD,SAAO,CAAC,kBAAkB,cAAe;CAC1C;;;;;;;CAQD,MAAM,UACJD,SACAC,OACiB;AACjB,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,UACR;AAKJ,MAAI,EAAE,iBAAiB,KACrB,OAAM,IAAI,UACR;EAKJ,MAAM,oBAAoB,MAAM,KAAK,MAAM,CAAC,OAC1C,CAAC,KAAK,CAAC,QAAQ,SAAS,KAAK;GAG3B,MAAM,gBAAgB,OAAO,QAAQ,uBAAuB,OAAO;AAInE,UAAO,IAAI,QAAQ,IAAI,OAAO,eAAe,MAAM,SAAS;EAC7D,GACD,QACD;AAED,SAAO;CACR;;;;;;CAOD,AAAQ,oBAAoBC,OAAuB;EACjD,IAAI,OAAO;AAEX,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAExC,MAAM,OAAO,MAAM,WAAW,EAAE;GAEhC,QAAQ,QAAQ,KAAK,OAAO;GAI5B,QAAQ;EACT;AAGD,SAAO,KAAK,UAAU;CACvB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regex_masking_transformer.js","names":["patterns: { [key: string]: MaskingPattern }","hashFunction?: HashFunction","message: string","state: Map<string, string>","input: string"],"sources":["../../../src/experimental/masking/regex_masking_transformer.ts"],"sourcesContent":["import { MaskingTransformer } from \"./transformer.js\";\nimport type { HashFunction, MaskingPattern } from \"./types.js\";\n/**\n * RegexMaskingTransformer class for masking and rehydrating messages with Regex.\n */\nexport class RegexMaskingTransformer extends MaskingTransformer {\n private patterns: { [key: string]: MaskingPattern };\n\n private hashFunction: HashFunction;\n\n /**\n * Constructs a RegexMaskingTransformer with given patterns and an optional hash function.\n * Validates the provided patterns to ensure they conform to the expected structure.\n *\n * @param patterns - An object containing masking patterns. Each pattern should include\n * a regular expression (`regex`) and optionally a `replacement` string\n * or a `mask` function.\n * @param hashFunction - An optional custom hash function to be used for masking.\n */\n constructor(\n patterns: { [key: string]: MaskingPattern },\n hashFunction?: HashFunction\n ) {\n super();\n // Validates the provided masking patterns before initializing the transformer.\n // This ensures that each pattern has a valid regular expression.\n this.validatePatterns(patterns);\n\n // Assigns the validated patterns and the hash function to the transformer.\n // If no custom hash function is provided, the default hash function is used.\n this.patterns = patterns;\n this.hashFunction = hashFunction || this.defaultHashFunction;\n }\n\n /**\n * Validates the given masking patterns to ensure each pattern has a valid regular expression.\n * Throws an error if any pattern is found to be invalid.\n *\n * @param patterns - The patterns object to validate.\n */\n private validatePatterns(patterns: { [key: string]: MaskingPattern }) {\n for (const key of Object.keys(patterns)) {\n const pattern = patterns[key];\n // Checks that each pattern is an object and has a regex property that is an instance of RegExp.\n // Throws an error if these conditions are not met, indicating an invalid pattern configuration.\n if (\n !pattern ||\n typeof pattern !== \"object\" ||\n // eslint-disable-next-line no-instanceof/no-instanceof\n !(pattern.regex instanceof RegExp)\n ) {\n throw new Error(\"Invalid pattern configuration.\");\n }\n }\n }\n\n /**\n * Masks content in a message based on the defined patterns.\n * @param message - The message to be masked.\n * @param state - The current state containing original values.\n * @returns A tuple of the masked message and the updated state.\n */\n async transform(\n message: string,\n state: Map<string, string>\n ): Promise<[string, Map<string, string>]> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Holds the progressively masked message\n let processedMessage = message;\n\n // Initialize original values map with the current state or a new map\n const originalValues = state || new Map<string, string>();\n\n // Iterate over each pattern defined in the transformer\n for (const key of Object.keys(this.patterns)) {\n const pattern = this.patterns[key];\n\n // Apply the current pattern's regex to the message\n processedMessage = processedMessage.replace(pattern.regex, (match) => {\n // Determine the masked value: use the mask function if provided, else use the replacement string,\n // else use the hash function.\n const maskedValue = pattern.mask\n ? pattern.mask(match)\n : pattern.replacement ?? this.hashFunction(match);\n\n // Store the mapping of the masked value to the original value (match)\n originalValues.set(maskedValue, match);\n\n // Return the masked value to replace the original value in the message\n return maskedValue;\n });\n }\n\n // Return the fully masked message and the state map with all original values\n // Wrap the synchronous return values in Promise.resolve() to maintain compatibility\n // with the MaskingParser's expectation of a Promise return type.\n return [processedMessage, originalValues];\n }\n\n /**\n * Rehydrates a masked message back to its original form using the provided state.\n * @param message - The masked message to be rehydrated.\n * @param state - The state map containing mappings of masked values to their original values.\n * @returns The rehydrated (original) message.\n */\n async rehydrate(\n message: string,\n state: Map<string, string>\n ): Promise<string> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Convert the state map to an array and use reduce to sequentially replace masked values with original values.\n const rehydratedMessage = Array.from(state).reduce(\n (msg, [masked, original]) => {\n // Escape special characters in the masked string to ensure it can be used in a regular expression safely.\n // This is necessary because masked values might contain characters that have special meanings in regex.\n const escapedMasked = masked.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Replace all instances of the escaped masked value in the message with the original value.\n // The 'g' flag in the RegExp ensures that all occurrences of the masked value are replaced.\n return msg.replace(new RegExp(escapedMasked, \"g\"), original);\n },\n message\n );\n\n return rehydratedMessage;\n }\n\n /**\n * Default hash function for creating unique hash values.\n * @param input - The input string to hash.\n * @returns The resulting hash as a string.\n */\n private defaultHashFunction(input: string): string {\n let hash = 0;\n // Iterate over each character in the input string\n for (let i = 0; i < input.length; i += 1) {\n // Get ASCII value of the character\n const char = input.charCodeAt(i);\n // Combine the current hash with the new character and ensure it remains a 32-bit integer\n hash = (hash << 5) - hash + char;\n // Bitwise OR operation to convert to a 32-bit integer.\n // This is a common technique to ensure the final hash value stays within the 32-bit limit,\n // effectively wrapping the value when it becomes too large.\n hash |= 0;\n }\n\n // Convert the numerical hash value to a string and return\n return hash.toString();\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,0BAAb,cAA6C,mBAAmB;CAC9D,AAAQ;CAER,AAAQ;;;;;;;;;;CAWR,YACEA,UACAC,cACA;EACA,OAAO;EAGP,KAAK,iBAAiB,SAAS;EAI/B,KAAK,WAAW;EAChB,KAAK,eAAe,gBAAgB,KAAK;CAC1C;;;;;;;CAQD,AAAQ,iBAAiBD,UAA6C;AACpE,OAAK,MAAM,OAAO,OAAO,KAAK,SAAS,EAAE;GACvC,MAAM,UAAU,SAAS;AAGzB,OACE,CAAC,WACD,OAAO,YAAY,YAEnB,EAAE,QAAQ,iBAAiB,QAE3B,OAAM,IAAI,MAAM;EAEnB;CACF;;;;;;;CAQD,MAAM,UACJE,SACAC,OACwC;AACxC,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,UACR;AAKJ,MAAI,EAAE,iBAAiB,KACrB,OAAM,IAAI,UACR;EAKJ,IAAI,mBAAmB;EAGvB,MAAM,iBAAiB,yBAAS,IAAI;AAGpC,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,SAAS,EAAE;GAC5C,MAAM,UAAU,KAAK,SAAS;GAG9B,mBAAmB,iBAAiB,QAAQ,QAAQ,OAAO,CAAC,UAAU;IAGpE,MAAM,cAAc,QAAQ,OACxB,QAAQ,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"regex_masking_transformer.js","names":["patterns: { [key: string]: MaskingPattern }","hashFunction?: HashFunction","message: string","state: Map<string, string>","input: string"],"sources":["../../../src/experimental/masking/regex_masking_transformer.ts"],"sourcesContent":["import { MaskingTransformer } from \"./transformer.js\";\nimport type { HashFunction, MaskingPattern } from \"./types.js\";\n/**\n * RegexMaskingTransformer class for masking and rehydrating messages with Regex.\n */\nexport class RegexMaskingTransformer extends MaskingTransformer {\n private patterns: { [key: string]: MaskingPattern };\n\n private hashFunction: HashFunction;\n\n /**\n * Constructs a RegexMaskingTransformer with given patterns and an optional hash function.\n * Validates the provided patterns to ensure they conform to the expected structure.\n *\n * @param patterns - An object containing masking patterns. Each pattern should include\n * a regular expression (`regex`) and optionally a `replacement` string\n * or a `mask` function.\n * @param hashFunction - An optional custom hash function to be used for masking.\n */\n constructor(\n patterns: { [key: string]: MaskingPattern },\n hashFunction?: HashFunction\n ) {\n super();\n // Validates the provided masking patterns before initializing the transformer.\n // This ensures that each pattern has a valid regular expression.\n this.validatePatterns(patterns);\n\n // Assigns the validated patterns and the hash function to the transformer.\n // If no custom hash function is provided, the default hash function is used.\n this.patterns = patterns;\n this.hashFunction = hashFunction || this.defaultHashFunction;\n }\n\n /**\n * Validates the given masking patterns to ensure each pattern has a valid regular expression.\n * Throws an error if any pattern is found to be invalid.\n *\n * @param patterns - The patterns object to validate.\n */\n private validatePatterns(patterns: { [key: string]: MaskingPattern }) {\n for (const key of Object.keys(patterns)) {\n const pattern = patterns[key];\n // Checks that each pattern is an object and has a regex property that is an instance of RegExp.\n // Throws an error if these conditions are not met, indicating an invalid pattern configuration.\n if (\n !pattern ||\n typeof pattern !== \"object\" ||\n // eslint-disable-next-line no-instanceof/no-instanceof\n !(pattern.regex instanceof RegExp)\n ) {\n throw new Error(\"Invalid pattern configuration.\");\n }\n }\n }\n\n /**\n * Masks content in a message based on the defined patterns.\n * @param message - The message to be masked.\n * @param state - The current state containing original values.\n * @returns A tuple of the masked message and the updated state.\n */\n async transform(\n message: string,\n state: Map<string, string>\n ): Promise<[string, Map<string, string>]> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.transform Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Holds the progressively masked message\n let processedMessage = message;\n\n // Initialize original values map with the current state or a new map\n const originalValues = state || new Map<string, string>();\n\n // Iterate over each pattern defined in the transformer\n for (const key of Object.keys(this.patterns)) {\n const pattern = this.patterns[key];\n\n // Apply the current pattern's regex to the message\n processedMessage = processedMessage.replace(pattern.regex, (match) => {\n // Determine the masked value: use the mask function if provided, else use the replacement string,\n // else use the hash function.\n const maskedValue = pattern.mask\n ? pattern.mask(match)\n : (pattern.replacement ?? this.hashFunction(match));\n\n // Store the mapping of the masked value to the original value (match)\n originalValues.set(maskedValue, match);\n\n // Return the masked value to replace the original value in the message\n return maskedValue;\n });\n }\n\n // Return the fully masked message and the state map with all original values\n // Wrap the synchronous return values in Promise.resolve() to maintain compatibility\n // with the MaskingParser's expectation of a Promise return type.\n return [processedMessage, originalValues];\n }\n\n /**\n * Rehydrates a masked message back to its original form using the provided state.\n * @param message - The masked message to be rehydrated.\n * @param state - The state map containing mappings of masked values to their original values.\n * @returns The rehydrated (original) message.\n */\n async rehydrate(\n message: string,\n state: Map<string, string>\n ): Promise<string> {\n if (typeof message !== \"string\") {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'message' argument must be a string.\"\n );\n }\n\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (!(state instanceof Map)) {\n throw new TypeError(\n \"RegexMaskingTransformer.rehydrate Error: The 'state' argument must be an instance of Map.\"\n );\n }\n\n // Convert the state map to an array and use reduce to sequentially replace masked values with original values.\n const rehydratedMessage = Array.from(state).reduce(\n (msg, [masked, original]) => {\n // Escape special characters in the masked string to ensure it can be used in a regular expression safely.\n // This is necessary because masked values might contain characters that have special meanings in regex.\n const escapedMasked = masked.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Replace all instances of the escaped masked value in the message with the original value.\n // The 'g' flag in the RegExp ensures that all occurrences of the masked value are replaced.\n return msg.replace(new RegExp(escapedMasked, \"g\"), original);\n },\n message\n );\n\n return rehydratedMessage;\n }\n\n /**\n * Default hash function for creating unique hash values.\n * @param input - The input string to hash.\n * @returns The resulting hash as a string.\n */\n private defaultHashFunction(input: string): string {\n let hash = 0;\n // Iterate over each character in the input string\n for (let i = 0; i < input.length; i += 1) {\n // Get ASCII value of the character\n const char = input.charCodeAt(i);\n // Combine the current hash with the new character and ensure it remains a 32-bit integer\n hash = (hash << 5) - hash + char;\n // Bitwise OR operation to convert to a 32-bit integer.\n // This is a common technique to ensure the final hash value stays within the 32-bit limit,\n // effectively wrapping the value when it becomes too large.\n hash |= 0;\n }\n\n // Convert the numerical hash value to a string and return\n return hash.toString();\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,0BAAb,cAA6C,mBAAmB;CAC9D,AAAQ;CAER,AAAQ;;;;;;;;;;CAWR,YACEA,UACAC,cACA;EACA,OAAO;EAGP,KAAK,iBAAiB,SAAS;EAI/B,KAAK,WAAW;EAChB,KAAK,eAAe,gBAAgB,KAAK;CAC1C;;;;;;;CAQD,AAAQ,iBAAiBD,UAA6C;AACpE,OAAK,MAAM,OAAO,OAAO,KAAK,SAAS,EAAE;GACvC,MAAM,UAAU,SAAS;AAGzB,OACE,CAAC,WACD,OAAO,YAAY,YAEnB,EAAE,QAAQ,iBAAiB,QAE3B,OAAM,IAAI,MAAM;EAEnB;CACF;;;;;;;CAQD,MAAM,UACJE,SACAC,OACwC;AACxC,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,UACR;AAKJ,MAAI,EAAE,iBAAiB,KACrB,OAAM,IAAI,UACR;EAKJ,IAAI,mBAAmB;EAGvB,MAAM,iBAAiB,yBAAS,IAAI;AAGpC,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,SAAS,EAAE;GAC5C,MAAM,UAAU,KAAK,SAAS;GAG9B,mBAAmB,iBAAiB,QAAQ,QAAQ,OAAO,CAAC,UAAU;IAGpE,MAAM,cAAc,QAAQ,OACxB,QAAQ,KAAK,MAAM,GAClB,QAAQ,eAAe,KAAK,aAAa,MAAM;IAGpD,eAAe,IAAI,aAAa,MAAM;AAGtC,WAAO;GACR,EAAC;EACH;AAKD,SAAO,CAAC,kBAAkB,cAAe;CAC1C;;;;;;;CAQD,MAAM,UACJD,SACAC,OACiB;AACjB,MAAI,OAAO,YAAY,SACrB,OAAM,IAAI,UACR;AAKJ,MAAI,EAAE,iBAAiB,KACrB,OAAM,IAAI,UACR;EAKJ,MAAM,oBAAoB,MAAM,KAAK,MAAM,CAAC,OAC1C,CAAC,KAAK,CAAC,QAAQ,SAAS,KAAK;GAG3B,MAAM,gBAAgB,OAAO,QAAQ,uBAAuB,OAAO;AAInE,UAAO,IAAI,QAAQ,IAAI,OAAO,eAAe,MAAM,SAAS;EAC7D,GACD,QACD;AAED,SAAO;CACR;;;;;;CAOD,AAAQ,oBAAoBC,OAAuB;EACjD,IAAI,OAAO;AAEX,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAExC,MAAM,OAAO,MAAM,WAAW,EAAE;GAEhC,QAAQ,QAAQ,KAAK,OAAO;GAI5B,QAAQ;EACT;AAGD,SAAO,KAAK,UAAU;CACvB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["Runnable","fields: OpenAIAssistantRunnableInput<AsAgent>","OpenAIClient","StructuredTool","input: RunInput","_options?: RunnableConfig","run: any","toolCall: any","params: Record<string, unknown>","runId: string","threadId: string","sleep","actions: OpenAIAssistantAction[]","item: any","tool: StructuredToolInterface"],"sources":["../../../src/experimental/openai_assistant/index.ts"],"sourcesContent":["import {\n type ClientOptions,\n type OpenAIChatModelId,\n OpenAIClient,\n} from \"@langchain/openai\";\nimport { StructuredTool, StructuredToolInterface } from \"@langchain/core/tools\";\nimport { Runnable, RunnableConfig } from \"@langchain/core/runnables\";\nimport { isInteropZodSchema } from \"@langchain/core/utils/types\";\nimport { toJsonSchema } from \"@langchain/core/utils/json_schema\";\nimport { ToolDefinition } from \"@langchain/core/language_models/base\";\nimport { sleep } from \"../../util/time.js\";\nimport type {\n OpenAIAssistantFinish,\n OpenAIAssistantAction,\n OpenAIToolType,\n} from \"./schema.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ThreadMessage = any;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RequiredActionFunctionToolCall = any;\n\ntype ExtractRunOutput<AsAgent extends boolean | undefined> =\n AsAgent extends true\n ? OpenAIAssistantFinish | OpenAIAssistantAction[]\n : ThreadMessage[] | RequiredActionFunctionToolCall[];\n\nexport type OpenAIAssistantRunnableInput<\n AsAgent extends boolean | undefined = undefined\n> = {\n client?: OpenAIClient;\n clientOptions?: ClientOptions;\n assistantId: string;\n pollIntervalMs?: number;\n asAgent?: AsAgent;\n};\n\nexport class OpenAIAssistantRunnable<\n AsAgent extends boolean | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput extends Record<string, any> = Record<string, any>\n> extends Runnable<RunInput, ExtractRunOutput<AsAgent>> {\n lc_namespace = [\"langchain\", \"experimental\", \"openai_assistant\"];\n\n private client: OpenAIClient;\n\n assistantId: string;\n\n pollIntervalMs = 1000;\n\n asAgent?: AsAgent;\n\n constructor(fields: OpenAIAssistantRunnableInput<AsAgent>) {\n super(fields);\n this.client = fields.client ?? new OpenAIClient(fields?.clientOptions);\n this.assistantId = fields.assistantId;\n this.asAgent = fields.asAgent ?? this.asAgent;\n }\n\n static async createAssistant<AsAgent extends boolean>({\n model,\n name,\n instructions,\n tools,\n client,\n clientOptions,\n asAgent,\n pollIntervalMs,\n fileIds,\n }: Omit<OpenAIAssistantRunnableInput<AsAgent>, \"assistantId\"> & {\n model: OpenAIChatModelId;\n name?: string;\n instructions?: string;\n tools?: OpenAIToolType | Array<StructuredTool>;\n fileIds?: string[];\n }) {\n const formattedTools =\n tools?.map((tool) => {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (tool instanceof StructuredTool) {\n return formatToOpenAIAssistantTool(tool);\n }\n return tool;\n }) ?? [];\n const oaiClient = client ?? new OpenAIClient(clientOptions);\n const assistant = await oaiClient.beta.assistants.create({\n name,\n instructions,\n tools: formattedTools,\n model,\n file_ids: fileIds,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n\n return new this({\n client: oaiClient,\n assistantId: assistant.id,\n asAgent,\n pollIntervalMs,\n });\n }\n\n async invoke(\n input: RunInput,\n _options?: RunnableConfig\n ): Promise<ExtractRunOutput<AsAgent>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let run: any;\n if (this.asAgent && input.steps && input.steps.length > 0) {\n const parsedStepsInput = await this._parseStepsInput(input);\n run = await this.client.beta.threads.runs.submitToolOutputs(\n parsedStepsInput.runId,\n {\n thread_id: parsedStepsInput.threadId,\n tool_outputs: parsedStepsInput.toolOutputs,\n }\n );\n } else if (!(\"threadId\" in input)) {\n const thread = {\n messages: [\n {\n role: \"user\",\n content: input.content,\n attachments: input.attachments,\n metadata: input.messagesMetadata,\n },\n ],\n metadata: input.threadMetadata,\n };\n run = await this._createThreadAndRun({\n ...input,\n thread,\n });\n } else if (!(\"runId\" in input)) {\n await this.client.beta.threads.messages.create(input.threadId, {\n content: input.content,\n role: \"user\",\n attachments: input.attachments,\n metadata: input.messagesMetadata,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n run = await this._createRun(input);\n } else {\n // Submitting tool outputs to an existing run, outside the AgentExecutor\n // framework.\n run = await this.client.beta.threads.runs.submitToolOutputs(input.runId, {\n thread_id: input.threadId,\n tool_outputs: input.toolOutputs,\n });\n }\n\n return this._getResponse(run.id, run.thread_id);\n }\n\n /**\n * Delete an assistant.\n *\n * @link {https://platform.openai.com/docs/api-reference/assistants/deleteAssistant}\n * @returns {Promise<AssistantDeleted>}\n */\n public async deleteAssistant() {\n return await this.client.beta.assistants.delete(this.assistantId);\n }\n\n /**\n * Retrieves an assistant.\n *\n * @link {https://platform.openai.com/docs/api-reference/assistants/getAssistant}\n * @returns {Promise<OpenAIClient.Beta.Assistants.Assistant>}\n */\n public async getAssistant() {\n return await this.client.beta.assistants.retrieve(this.assistantId);\n }\n\n /**\n * Modifies an assistant.\n *\n * @link {https://platform.openai.com/docs/api-reference/assistants/modifyAssistant}\n * @returns {Promise<OpenAIClient.Beta.Assistants.Assistant>}\n */\n public async modifyAssistant<AsAgent extends boolean>({\n model,\n name,\n instructions,\n fileIds,\n }: Omit<OpenAIAssistantRunnableInput<AsAgent>, \"assistantId\" | \"tools\"> & {\n model?: OpenAIChatModelId;\n name?: string;\n instructions?: string;\n fileIds?: string[];\n }) {\n return await this.client.beta.assistants.update(this.assistantId, {\n name,\n instructions,\n model,\n file_ids: fileIds,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n }\n\n private async _parseStepsInput(input: RunInput): Promise<RunInput> {\n const {\n action: { runId, threadId },\n } = input.steps[input.steps.length - 1];\n const run = await this._waitForRun(runId, threadId);\n const toolCalls = run.required_action?.submit_tool_outputs.tool_calls;\n if (!toolCalls) {\n return input;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toolOutputs = toolCalls.flatMap((toolCall: any) => {\n const matchedAction = (\n input.steps as {\n action: OpenAIAssistantAction;\n observation: string;\n }[]\n ).find((step) => step.action.toolCallId === toolCall.id);\n\n return matchedAction\n ? [\n {\n output: matchedAction.observation,\n tool_call_id: matchedAction.action.toolCallId,\n },\n ]\n : [];\n });\n return { toolOutputs, runId, threadId } as unknown as RunInput;\n }\n\n private async _createRun({\n instructions,\n model,\n tools,\n metadata,\n threadId,\n }: RunInput) {\n const run = this.client.beta.threads.runs.create(threadId, {\n assistant_id: this.assistantId,\n instructions,\n model,\n tools,\n metadata,\n });\n return run;\n }\n\n private async _createThreadAndRun(input: RunInput) {\n const params: Record<string, unknown> = [\n \"instructions\",\n \"model\",\n \"tools\",\n \"run_metadata\",\n ]\n .filter((key) => key in input)\n .reduce((obj, key) => {\n const newObj = obj;\n newObj[key] = input[key];\n return newObj;\n }, {} as Record<string, unknown>);\n const run = this.client.beta.threads.createAndRun({\n ...params,\n thread: input.thread,\n assistant_id: this.assistantId,\n });\n return run;\n }\n\n private async _waitForRun(runId: string, threadId: string) {\n let inProgress = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let run = {} as any;\n while (inProgress) {\n run = await this.client.beta.threads.runs.retrieve(runId, {\n thread_id: threadId,\n });\n inProgress = [\"in_progress\", \"queued\"].includes(run.status);\n if (inProgress) {\n await sleep(this.pollIntervalMs);\n }\n }\n return run;\n }\n\n private async _getResponse(\n runId: string,\n threadId: string\n ): Promise<ExtractRunOutput<AsAgent>>;\n\n private async _getResponse(\n runId: string,\n threadId: string\n ): Promise<\n | OpenAIAssistantFinish\n | OpenAIAssistantAction[]\n | ThreadMessage[]\n | RequiredActionFunctionToolCall[]\n > {\n const run = await this._waitForRun(runId, threadId);\n if (run.status === \"completed\") {\n const messages = await this.client.beta.threads.messages.list(threadId, {\n order: \"desc\",\n });\n const newMessages = messages.data.filter((msg) => msg.run_id === runId);\n if (!this.asAgent) {\n return newMessages;\n }\n const answer = newMessages.flatMap((msg) => msg.content);\n if (answer.every((item) => item.type === \"text\")) {\n const answerString = answer\n .map((item) => item.type === \"text\" && item.text.value)\n .join(\"\\n\");\n return {\n returnValues: {\n output: answerString,\n runId,\n threadId,\n },\n log: \"\",\n runId,\n threadId,\n };\n }\n } else if (run.status === \"requires_action\") {\n if (!this.asAgent) {\n return run.required_action?.submit_tool_outputs.tool_calls ?? [];\n }\n const actions: OpenAIAssistantAction[] = [];\n run.required_action?.submit_tool_outputs.tool_calls.forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (item: any) => {\n const functionCall = item.function;\n const args = JSON.parse(functionCall.arguments);\n actions.push({\n tool: functionCall.name,\n toolInput: args,\n toolCallId: item.id,\n log: \"\",\n runId,\n threadId,\n });\n }\n );\n return actions;\n }\n const runInfo = JSON.stringify(run, null, 2);\n throw new Error(\n `Unexpected run status ${run.status}.\\nFull run info:\\n\\n${runInfo}`\n );\n }\n}\n\nexport function formatToOpenAIAssistantTool(\n tool: StructuredToolInterface\n): ToolDefinition {\n return {\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: isInteropZodSchema(tool.schema)\n ? toJsonSchema(tool.schema)\n : tool.schema,\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["Runnable","fields: OpenAIAssistantRunnableInput<AsAgent>","OpenAIClient","StructuredTool","input: RunInput","_options?: RunnableConfig","run: any","toolCall: any","params: Record<string, unknown>","runId: string","threadId: string","sleep","actions: OpenAIAssistantAction[]","item: any","tool: StructuredToolInterface"],"sources":["../../../src/experimental/openai_assistant/index.ts"],"sourcesContent":["import {\n type ClientOptions,\n type OpenAIChatModelId,\n OpenAIClient,\n} from \"@langchain/openai\";\nimport { StructuredTool, StructuredToolInterface } from \"@langchain/core/tools\";\nimport { Runnable, RunnableConfig } from \"@langchain/core/runnables\";\nimport { isInteropZodSchema } from \"@langchain/core/utils/types\";\nimport { toJsonSchema } from \"@langchain/core/utils/json_schema\";\nimport { ToolDefinition } from \"@langchain/core/language_models/base\";\nimport { sleep } from \"../../util/time.js\";\nimport type {\n OpenAIAssistantFinish,\n OpenAIAssistantAction,\n OpenAIToolType,\n} from \"./schema.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ThreadMessage = any;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RequiredActionFunctionToolCall = any;\n\ntype ExtractRunOutput<AsAgent extends boolean | undefined> =\n AsAgent extends true\n ? OpenAIAssistantFinish | OpenAIAssistantAction[]\n : ThreadMessage[] | RequiredActionFunctionToolCall[];\n\nexport type OpenAIAssistantRunnableInput<\n AsAgent extends boolean | undefined = undefined,\n> = {\n client?: OpenAIClient;\n clientOptions?: ClientOptions;\n assistantId: string;\n pollIntervalMs?: number;\n asAgent?: AsAgent;\n};\n\nexport class OpenAIAssistantRunnable<\n AsAgent extends boolean | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput extends Record<string, any> = Record<string, any>,\n> extends Runnable<RunInput, ExtractRunOutput<AsAgent>> {\n lc_namespace = [\"langchain\", \"experimental\", \"openai_assistant\"];\n\n private client: OpenAIClient;\n\n assistantId: string;\n\n pollIntervalMs = 1000;\n\n asAgent?: AsAgent;\n\n constructor(fields: OpenAIAssistantRunnableInput<AsAgent>) {\n super(fields);\n this.client = fields.client ?? new OpenAIClient(fields?.clientOptions);\n this.assistantId = fields.assistantId;\n this.asAgent = fields.asAgent ?? this.asAgent;\n }\n\n static async createAssistant<AsAgent extends boolean>({\n model,\n name,\n instructions,\n tools,\n client,\n clientOptions,\n asAgent,\n pollIntervalMs,\n fileIds,\n }: Omit<OpenAIAssistantRunnableInput<AsAgent>, \"assistantId\"> & {\n model: OpenAIChatModelId;\n name?: string;\n instructions?: string;\n tools?: OpenAIToolType | Array<StructuredTool>;\n fileIds?: string[];\n }) {\n const formattedTools =\n tools?.map((tool) => {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (tool instanceof StructuredTool) {\n return formatToOpenAIAssistantTool(tool);\n }\n return tool;\n }) ?? [];\n const oaiClient = client ?? new OpenAIClient(clientOptions);\n const assistant = await oaiClient.beta.assistants.create({\n name,\n instructions,\n tools: formattedTools,\n model,\n file_ids: fileIds,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n\n return new this({\n client: oaiClient,\n assistantId: assistant.id,\n asAgent,\n pollIntervalMs,\n });\n }\n\n async invoke(\n input: RunInput,\n _options?: RunnableConfig\n ): Promise<ExtractRunOutput<AsAgent>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let run: any;\n if (this.asAgent && input.steps && input.steps.length > 0) {\n const parsedStepsInput = await this._parseStepsInput(input);\n run = await this.client.beta.threads.runs.submitToolOutputs(\n parsedStepsInput.runId,\n {\n thread_id: parsedStepsInput.threadId,\n tool_outputs: parsedStepsInput.toolOutputs,\n }\n );\n } else if (!(\"threadId\" in input)) {\n const thread = {\n messages: [\n {\n role: \"user\",\n content: input.content,\n attachments: input.attachments,\n metadata: input.messagesMetadata,\n },\n ],\n metadata: input.threadMetadata,\n };\n run = await this._createThreadAndRun({\n ...input,\n thread,\n });\n } else if (!(\"runId\" in input)) {\n await this.client.beta.threads.messages.create(input.threadId, {\n content: input.content,\n role: \"user\",\n attachments: input.attachments,\n metadata: input.messagesMetadata,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n run = await this._createRun(input);\n } else {\n // Submitting tool outputs to an existing run, outside the AgentExecutor\n // framework.\n run = await this.client.beta.threads.runs.submitToolOutputs(input.runId, {\n thread_id: input.threadId,\n tool_outputs: input.toolOutputs,\n });\n }\n\n return this._getResponse(run.id, run.thread_id);\n }\n\n /**\n * Delete an assistant.\n *\n * @link {https://platform.openai.com/docs/api-reference/assistants/deleteAssistant}\n * @returns {Promise<AssistantDeleted>}\n */\n public async deleteAssistant() {\n return await this.client.beta.assistants.delete(this.assistantId);\n }\n\n /**\n * Retrieves an assistant.\n *\n * @link {https://platform.openai.com/docs/api-reference/assistants/getAssistant}\n * @returns {Promise<OpenAIClient.Beta.Assistants.Assistant>}\n */\n public async getAssistant() {\n return await this.client.beta.assistants.retrieve(this.assistantId);\n }\n\n /**\n * Modifies an assistant.\n *\n * @link {https://platform.openai.com/docs/api-reference/assistants/modifyAssistant}\n * @returns {Promise<OpenAIClient.Beta.Assistants.Assistant>}\n */\n public async modifyAssistant<AsAgent extends boolean>({\n model,\n name,\n instructions,\n fileIds,\n }: Omit<OpenAIAssistantRunnableInput<AsAgent>, \"assistantId\" | \"tools\"> & {\n model?: OpenAIChatModelId;\n name?: string;\n instructions?: string;\n fileIds?: string[];\n }) {\n return await this.client.beta.assistants.update(this.assistantId, {\n name,\n instructions,\n model,\n file_ids: fileIds,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any);\n }\n\n private async _parseStepsInput(input: RunInput): Promise<RunInput> {\n const {\n action: { runId, threadId },\n } = input.steps[input.steps.length - 1];\n const run = await this._waitForRun(runId, threadId);\n const toolCalls = run.required_action?.submit_tool_outputs.tool_calls;\n if (!toolCalls) {\n return input;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toolOutputs = toolCalls.flatMap((toolCall: any) => {\n const matchedAction = (\n input.steps as {\n action: OpenAIAssistantAction;\n observation: string;\n }[]\n ).find((step) => step.action.toolCallId === toolCall.id);\n\n return matchedAction\n ? [\n {\n output: matchedAction.observation,\n tool_call_id: matchedAction.action.toolCallId,\n },\n ]\n : [];\n });\n return { toolOutputs, runId, threadId } as unknown as RunInput;\n }\n\n private async _createRun({\n instructions,\n model,\n tools,\n metadata,\n threadId,\n }: RunInput) {\n const run = this.client.beta.threads.runs.create(threadId, {\n assistant_id: this.assistantId,\n instructions,\n model,\n tools,\n metadata,\n });\n return run;\n }\n\n private async _createThreadAndRun(input: RunInput) {\n const params: Record<string, unknown> = [\n \"instructions\",\n \"model\",\n \"tools\",\n \"run_metadata\",\n ]\n .filter((key) => key in input)\n .reduce(\n (obj, key) => {\n const newObj = obj;\n newObj[key] = input[key];\n return newObj;\n },\n {} as Record<string, unknown>\n );\n const run = this.client.beta.threads.createAndRun({\n ...params,\n thread: input.thread,\n assistant_id: this.assistantId,\n });\n return run;\n }\n\n private async _waitForRun(runId: string, threadId: string) {\n let inProgress = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let run = {} as any;\n while (inProgress) {\n run = await this.client.beta.threads.runs.retrieve(runId, {\n thread_id: threadId,\n });\n inProgress = [\"in_progress\", \"queued\"].includes(run.status);\n if (inProgress) {\n await sleep(this.pollIntervalMs);\n }\n }\n return run;\n }\n\n private async _getResponse(\n runId: string,\n threadId: string\n ): Promise<ExtractRunOutput<AsAgent>>;\n\n private async _getResponse(\n runId: string,\n threadId: string\n ): Promise<\n | OpenAIAssistantFinish\n | OpenAIAssistantAction[]\n | ThreadMessage[]\n | RequiredActionFunctionToolCall[]\n > {\n const run = await this._waitForRun(runId, threadId);\n if (run.status === \"completed\") {\n const messages = await this.client.beta.threads.messages.list(threadId, {\n order: \"desc\",\n });\n const newMessages = messages.data.filter((msg) => msg.run_id === runId);\n if (!this.asAgent) {\n return newMessages;\n }\n const answer = newMessages.flatMap((msg) => msg.content);\n if (answer.every((item) => item.type === \"text\")) {\n const answerString = answer\n .map((item) => item.type === \"text\" && item.text.value)\n .join(\"\\n\");\n return {\n returnValues: {\n output: answerString,\n runId,\n threadId,\n },\n log: \"\",\n runId,\n threadId,\n };\n }\n } else if (run.status === \"requires_action\") {\n if (!this.asAgent) {\n return run.required_action?.submit_tool_outputs.tool_calls ?? [];\n }\n const actions: OpenAIAssistantAction[] = [];\n run.required_action?.submit_tool_outputs.tool_calls.forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (item: any) => {\n const functionCall = item.function;\n const args = JSON.parse(functionCall.arguments);\n actions.push({\n tool: functionCall.name,\n toolInput: args,\n toolCallId: item.id,\n log: \"\",\n runId,\n threadId,\n });\n }\n );\n return actions;\n }\n const runInfo = JSON.stringify(run, null, 2);\n throw new Error(\n `Unexpected run status ${run.status}.\\nFull run info:\\n\\n${runInfo}`\n );\n }\n}\n\nexport function formatToOpenAIAssistantTool(\n tool: StructuredToolInterface\n): ToolDefinition {\n return {\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: isInteropZodSchema(tool.schema)\n ? toJsonSchema(tool.schema)\n : tool.schema,\n },\n };\n}\n"],"mappings":"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"}
|