From 82ac6a6214b6694b990a825ff53706e3166b1a39 Mon Sep 17 00:00:00 2001 From: David Miguel Date: Fri, 29 Mar 2024 23:32:10 +0100 Subject: [PATCH] refactor!: Introduce langchain_core and langchain_community packages --- .../lib/popup/bloc/pop_up_screen_cubit.dart | 1 + examples/browser_summarizer/pubspec.lock | 18 +- examples/browser_summarizer/pubspec.yaml | 3 +- .../browser_summarizer/pubspec_overrides.yaml | 6 +- .../expression_language/cookbook/tools.dart | 1 + .../bin/expression_language/interface.dart | 1 + .../agent_types/openai_functions_agent.dart | 1 + .../bin/modules/agents/tools/calculator.dart | 1 + .../modules/agents/tools/openai_dalle.dart | 1 + examples/docs_examples/pubspec.lock | 18 +- examples/docs_examples/pubspec.yaml | 3 +- examples/docs_examples/pubspec_overrides.yaml | 6 +- examples/hello_world_backend/pubspec.lock | 95 +-------- examples/hello_world_backend/pubspec.yaml | 2 +- .../pubspec_overrides.yaml | 4 +- examples/hello_world_cli/pubspec.lock | 95 +-------- examples/hello_world_cli/pubspec.yaml | 2 +- .../hello_world_cli/pubspec_overrides.yaml | 4 +- examples/hello_world_flutter/pubspec.lock | 87 +------- examples/hello_world_flutter/pubspec.yaml | 2 +- .../pubspec_overrides.yaml | 4 +- .../pubspec.yaml | 2 +- melos.yaml | 50 ++++- packages/chromadb/pubspec.yaml | 1 - .../chromadb/test/chroma_client_test.dart | 4 +- .../langchain/example/langchain_example.dart | 10 +- packages/langchain/lib/langchain.dart | 20 +- packages/langchain/lib/src/agents/agents.dart | 7 +- .../agents/{executors.dart => executor.dart} | 13 +- .../langchain/lib/src/agents/tools/tools.dart | 3 - packages/langchain/lib/src/chains/base.dart | 188 ------------------ packages/langchain/lib/src/chains/chains.dart | 4 +- .../src/chains/combine_documents/base.dart | 9 +- .../chains/combine_documents/map_reduce.dart | 10 +- .../src/chains/combine_documents/reduce.dart | 7 +- .../src/chains/combine_documents/stuff.dart | 10 +- .../lib/src/chains/conversation.dart | 7 +- .../src/chains/question_answering/stuff.dart | 7 +- .../lib/src/chains/retrieval_qa.dart | 12 +- .../langchain/lib/src/chains/sequential.dart | 5 +- .../src/chains/summarization/summarize.dart | 7 +- .../lib/src/chat_history/chat_history.dart | 3 + .../in_memory.dart | 4 +- .../lib/src/chat_models/chat_models.dart | 1 + packages/langchain/lib/src/core/base.dart | 22 -- packages/langchain/lib/src/core/core.dart | 2 - .../document_loaders/document_loaders.dart | 1 + .../lib/src/documents/documents.dart | 8 +- .../lib/src/documents/stores/base.dart | 18 -- .../lib/src/documents/stores/in_memory.dart | 34 ---- .../lib/src/documents/stores/stores.dart | 2 - .../documents/transformers/transformers.dart | 2 - .../vector_stores/vector_stores.dart | 3 - .../src/{documents => }/embeddings/cache.dart | 7 +- .../lib/src/embeddings/embeddings.dart | 3 + .../lib/src/exceptions/exceptions.dart | 1 + .../lib/src/langchain/langchain.dart | 1 + .../src/language_models/language_models.dart | 1 + packages/langchain/lib/src/llms/llms.dart | 1 + packages/langchain/lib/src/memory/buffer.dart | 14 +- .../lib/src/memory/buffer_window.dart | 14 +- .../chat_message_history.dart | 2 - packages/langchain/lib/src/memory/memory.dart | 6 +- packages/langchain/lib/src/memory/simple.dart | 3 +- .../langchain/lib/src/memory/summary.dart | 20 +- .../lib/src/memory/token_buffer.dart | 19 +- .../lib/src/memory/vector_store.dart | 7 +- .../language_models/language_models.dart | 2 - .../langchain/lib/src/model_io/model_io.dart | 5 - .../output_parsers/output_parsers.dart | 4 - .../src/output_parsers/output_parsers.dart | 1 + .../langchain/lib/src/prompts/prompts.dart | 1 + .../lib/src/retrievers/retrievers.dart | 1 + .../lib/src/runnables/runnables.dart | 1 + .../{storage => stores}/encoder_backed.dart | 2 +- .../{storage => stores}/file_system_io.dart | 2 +- .../{storage => stores}/file_system_stub.dart | 2 +- .../src/{storage => stores}/in_memory.dart | 2 +- .../storage.dart => stores/stores.dart} | 3 +- .../text_splitters/character.dart | 0 .../text_splitters/code.dart | 0 .../text_splitters/recursive_character.dart | 0 .../text_splitters/text_splitter.dart | 4 +- .../text_splitters/text_splitters.dart | 0 .../text_splitters/utils.dart | 0 .../lib/src/{agents => }/tools/exception.dart | 4 +- .../lib/src/{agents => }/tools/invalid.dart | 3 +- packages/langchain/lib/src/tools/tools.dart | 4 + packages/langchain/lib/src/utils/utils.dart | 2 - .../{documents => }/vector_stores/memory.dart | 8 +- .../lib/src/vector_stores/vector_stores.dart | 3 + packages/langchain/pubspec.yaml | 8 +- packages/langchain/pubspec_overrides.yaml | 4 + ...executors_test.dart => executor_test.dart} | 0 packages/langchain/test/chains/base_test.dart | 28 ++- .../combine_documents/map_reduce_test.dart | 7 +- .../chains/combine_documents/reduce_test.dart | 5 +- .../chains/combine_documents/stuff_test.dart | 7 +- .../test/chains/conversation_test.dart | 4 +- .../test/chains/retrieval_qa_test.dart | 5 +- .../test/chains/sequential_test.dart | 3 +- .../in_memory_test.dart | 0 .../test/documents/stores/in_memory.dart | 55 ----- .../{documents => }/embeddings/cache.dart | 0 .../{storage => stores}/encoder_backed.dart | 0 .../test/{storage => stores}/file_system.dart | 0 .../test/{storage => stores}/in_memory.dart | 0 .../text_splitters/character_test.dart | 47 +++++ .../text_splitters/code_test.dart | 0 .../recursive_character_test.dart | 0 .../text_splitters/utils_test.dart | 2 +- .../vector_stores/memory_test.dart | 0 packages/langchain_amazon/pubspec.yaml | 7 - .../langchain_amazon/pubspec_overrides.yaml | 4 - packages/langchain_anthropic/pubspec.yaml | 7 - .../pubspec_overrides.yaml | 4 - .../lib/src/vector_stores/chroma.dart | 5 +- .../{models/models.dart => types.dart} | 2 +- .../lib/src/vector_stores/vector_stores.dart | 2 +- packages/langchain_chroma/pubspec.yaml | 4 +- .../langchain_chroma/pubspec_overrides.yaml | 6 +- .../test/vector_stores/chroma_test.dart | 4 +- packages/langchain_cohere/pubspec.yaml | 7 - .../langchain_cohere/pubspec_overrides.yaml | 4 - .../lib/langchain_community.dart | 3 + .../lib/src/document_loaders}/csv.dart | 5 +- .../document_loaders/document_loaders.dart} | 1 - .../lib/src/document_loaders}/json.dart | 4 +- .../lib/src/document_loaders}/text.dart | 4 +- .../lib/src/document_loaders}/web.dart | 4 +- .../lib/src}/tools/calculator.dart | 7 +- .../lib/src/tools/tools.dart | 1 + packages/langchain_community/pubspec.yaml | 7 + .../pubspec_overrides.yaml | 4 + .../test/document_loaders}/assets/example.txt | 0 .../document_loaders}/assets/example_1.csv | 0 .../document_loaders}/assets/example_1.json | 0 .../document_loaders}/assets/example_2.csv | 0 .../document_loaders}/assets/example_2.json | 0 .../document_loaders}/assets/example_2.tsv | 0 .../test/document_loaders}/csv_test.dart | 19 +- .../test/document_loaders}/json_test.dart | 11 +- .../test/document_loaders}/text_test.dart | 5 +- .../test/document_loaders}/web_test.dart | 2 +- .../test}/tools/calculator_test.dart | 3 +- packages/langchain_core/lib/agents.dart | 4 + packages/langchain_core/lib/chains.dart | 4 + packages/langchain_core/lib/chat_history.dart | 4 + packages/langchain_core/lib/chat_models.dart | 4 + .../langchain_core/lib/document_loaders.dart | 4 + packages/langchain_core/lib/documents.dart | 4 + packages/langchain_core/lib/embeddings.dart | 4 + packages/langchain_core/lib/exceptions.dart | 4 + packages/langchain_core/lib/langchain.dart | 4 + .../langchain_core/lib/langchain_core.dart | 2 - .../langchain_core/lib/language_models.dart | 4 + packages/langchain_core/lib/llms.dart | 4 + packages/langchain_core/lib/memory.dart | 4 + .../langchain_core/lib/output_parsers.dart | 4 + packages/langchain_core/lib/prompts.dart | 4 + packages/langchain_core/lib/retrievers.dart | 4 + packages/langchain_core/lib/runnables.dart | 4 + .../langchain_core/lib/src/agents/agents.dart | 2 + .../lib/src/agents/base.dart} | 40 ++-- .../lib/src/agents/types.dart} | 4 +- .../langchain_core/lib/src/chains/base.dart | 188 ++++++++++++++++++ .../langchain_core/lib/src/chains/chains.dart | 3 + .../lib/src/chains/llm_chain.dart | 13 +- .../lib/src/chains/types.dart} | 2 +- .../lib/src/chat_history}/base.dart | 2 +- .../lib/src/chat_history/chat_history.dart | 1 + .../lib/src}/chat_models/base.dart | 4 +- .../lib/src/chat_models/chat_models.dart | 4 + .../lib/src}/chat_models/fake.dart | 4 +- .../lib/src/chat_models/types.dart} | 2 +- .../lib/src}/chat_models/utils.dart | 2 +- .../lib/src/document_loaders}/base.dart | 12 +- .../document_loaders/document_loaders.dart | 1 + .../lib/src/documents/document.dart} | 0 .../lib/src/documents/documents.dart | 2 + .../lib/src/documents/transformer.dart} | 5 +- .../lib/src}/embeddings/base.dart | 2 +- .../lib/src}/embeddings/embeddings.dart | 1 - .../lib/src}/embeddings/fake.dart | 2 +- .../lib/src/exceptions/base.dart} | 0 .../lib/src/exceptions/exceptions.dart | 1 + .../lib/src/langchain/base.dart | 12 ++ .../lib/src/langchain/langchain.dart | 2 + .../lib/src/langchain/types.dart | 10 + .../lib/src}/language_models/base.dart | 6 +- .../src/language_models/language_models.dart | 2 + .../lib/src/language_models/types.dart} | 58 +++--- .../lib/src}/llms/base.dart | 6 +- .../lib/src}/llms/fake.dart | 4 +- .../lib/src}/llms/llms.dart | 2 +- .../lib/src/llms/types.dart} | 2 +- .../lib/src/memory/base.dart | 2 +- .../lib/src/memory/chat.dart | 17 +- .../langchain_core/lib/src/memory/memory.dart | 4 + .../lib/src/memory/types.dart} | 0 .../lib/src/memory/utils.dart | 12 +- .../lib/src/output_parsers/base.dart} | 7 +- .../lib/src/output_parsers/exceptions.dart} | 2 +- .../lib/src}/output_parsers/functions.dart | 10 +- .../src/output_parsers/output_parsers.dart | 4 + .../lib/src}/output_parsers/string.dart | 4 +- .../lib/src/output_parsers/utils.dart} | 0 .../prompts/base_chat_message_prompt.dart | 7 +- .../lib/src}/prompts/base_chat_prompt.dart | 4 +- .../lib/src}/prompts/base_prompt.dart | 5 +- .../lib/src}/prompts/chat_prompt.dart | 2 +- .../lib/src}/prompts/pipeline.dart | 2 +- .../lib/src}/prompts/prompt.dart | 2 +- .../lib/src}/prompts/prompt_selector.dart | 0 .../lib/src}/prompts/prompts.dart | 2 +- .../lib/src}/prompts/template.dart | 4 +- .../lib/src/prompts/types.dart} | 6 +- .../lib/src}/retrievers/base.dart | 6 +- .../lib/src}/retrievers/fake.dart | 4 +- .../lib/src}/retrievers/retrievers.dart | 2 +- .../lib/src/retrievers/types.dart} | 5 +- .../lib/src}/retrievers/vector_store.dart | 6 +- .../lib/src/runnables}/binding.dart | 4 +- .../lib/src/runnables}/function.dart | 4 +- .../lib/src/runnables}/input_getter.dart | 4 +- .../lib/src/runnables}/input_map.dart | 4 +- .../lib/src/runnables}/map.dart | 4 +- .../lib/src/runnables}/passthrough.dart | 4 +- .../lib/src/runnables/runnable.dart} | 2 +- .../lib/src/runnables/runnable_ext.dart} | 4 +- .../lib/src/runnables/runnables.dart} | 5 +- .../lib/src/runnables}/sequence.dart | 5 +- .../lib/src/stores}/base.dart | 0 .../langchain_core/lib/src/stores/stores.dart | 1 + .../lib/src}/tools/base.dart | 6 +- .../langchain_core/lib/src/tools/fake.dart | 29 +++ .../lib/src/tools/tools.dart} | 2 +- .../lib/src/tools/types.dart} | 5 +- .../lib/src/utils/chunk.dart | 0 .../langchain_core/lib/src/utils/utils.dart | 1 + .../lib/src}/vector_stores/base.dart | 6 +- .../lib/src/vector_stores/types.dart} | 0 .../lib/src/vector_stores/vector_stores.dart | 2 + packages/langchain_core/lib/stores.dart | 4 + packages/langchain_core/lib/tools.dart | 4 + packages/langchain_core/lib/utils.dart | 4 + .../langchain_core/lib/vector_stores.dart | 4 + packages/langchain_core/pubspec.yaml | 3 + .../test/chains/llm_chain_test.dart | 5 +- .../test}/chat_models/fake_test.dart | 3 +- .../test}/embeddings/fake.dart | 3 +- .../test}/output_parsers/functions_test.dart | 3 +- .../test}/output_parsers/string_test.dart | 4 +- .../test/output_parsers/utils_test.dart} | 2 +- .../test}/prompts/assets/prompt_file.txt | 0 .../test}/prompts/chat_prompt_test.dart | 6 +- .../test}/prompts/pipeline_test.dart | 2 +- .../test}/prompts/prompt_test.dart | 4 +- .../test}/prompts/template_test.dart | 4 +- .../test/runnables}/binding_test.dart | 5 +- .../test/runnables}/function_test.dart | 5 +- .../test/runnables}/input_getter_test.dart | 2 +- .../test/runnables}/input_map_test.dart | 8 +- .../test/runnables}/invoke_test.dart | 41 +--- .../test/runnables}/map_test.dart | 6 +- .../test/runnables}/passthrough_test.dart | 5 +- .../test/runnables}/sequence_test.dart | 6 +- .../test/runnables}/stream_test.dart | 53 +---- .../test}/tools/base_test.dart | 2 +- .../test/utils/chunk_test.dart | 2 +- .../example/langchain_google_example.dart | 2 +- .../lib/langchain_google.dart | 1 - .../lib/src/chat_models/chat_models.dart | 4 +- .../google_ai/chat_google_generative_ai.dart | 7 +- .../google_ai/{models => }/mappers.dart | 5 +- .../{models/models.dart => types.dart} | 2 +- .../chat_models/vertex_ai/chat_vertex_ai.dart | 7 +- .../vertex_ai/{models => }/mappers.dart | 3 +- .../{models/models.dart => types.dart} | 2 +- .../lib/src/doc_loaders/doc_loaders.dart | 1 - .../lib/src/embeddings/vertex_ai.dart | 4 +- .../langchain_google/lib/src/llms/llms.dart | 4 +- .../llms/{models => vertex_ai}/mappers.dart | 3 +- .../models.dart => vertex_ai/types.dart} | 2 +- .../src/llms/{ => vertex_ai}/vertex_ai.dart | 7 +- .../vector_stores/{models => }/mappers.dart | 2 +- .../src/vector_stores/matching_engine.dart | 6 +- .../{models/models.dart => types.dart} | 2 +- .../lib/src/vector_stores/vector_stores.dart | 2 +- packages/langchain_google/pubspec.yaml | 2 +- .../langchain_google/pubspec_overrides.yaml | 6 +- .../chat_google_generative_ai_test.dart | 3 +- .../test/chat_models/chat_vertex_ai_test.dart | 3 +- .../test/embeddings/vertex_ai_test.dart | 2 +- .../test/llms/vertex_ai_test.dart | 2 +- .../vector_stores/matching_engine_test.dart | 3 +- packages/langchain_huggingface/pubspec.yaml | 7 - .../pubspec_overrides.yaml | 4 - packages/langchain_microsoft/pubspec.yaml | 7 - .../pubspec_overrides.yaml | 4 - .../lib/src/chat_models/chat_mistralai.dart | 7 +- .../lib/src/chat_models/chat_models.dart | 2 +- .../src/chat_models/{models => }/mappers.dart | 3 +- .../{models/models.dart => types.dart} | 2 +- .../src/embeddings/mistralai_embeddings.dart | 4 +- packages/langchain_mistralai/pubspec.yaml | 2 +- .../pubspec_overrides.yaml | 6 +- .../test/chat_models/chat_mistralai_test.dart | 4 +- .../embeddings/mistralai_embeddings_test.dart | 2 +- .../lib/src/chat_models/chat_models.dart | 2 +- .../lib/src/chat_models/chat_ollama.dart | 9 +- .../src/chat_models/{models => }/mappers.dart | 3 +- .../{models/models.dart => types.dart} | 4 +- .../lib/src/embeddings/ollama_embeddings.dart | 3 +- .../langchain_ollama/lib/src/llms/llms.dart | 2 +- .../lib/src/llms/{models => }/mappers.dart | 5 +- .../langchain_ollama/lib/src/llms/ollama.dart | 7 +- .../llms/{models/models.dart => types.dart} | 2 +- packages/langchain_ollama/pubspec.yaml | 2 +- .../langchain_ollama/pubspec_overrides.yaml | 6 +- .../test/chat_models/chat_ollama_test.dart | 4 +- .../test/embeddings/ollama_test.dart | 2 +- .../test/llms/ollama_test.dart | 3 +- .../lib/langchain_openai.dart | 1 + .../lib/src/agents/agents.dart | 1 - .../lib/src/agents/functions.dart | 10 +- .../lib/src/agents/tools/tools.dart | 2 - .../lib/src/chains/qa_with_sources.dart | 4 +- .../lib/src/chains/qa_with_structure.dart | 7 +- .../lib/src/chat_models/chat_models.dart | 2 +- .../lib/src/chat_models/chat_openai.dart | 7 +- .../src/chat_models/{models => }/mappers.dart | 5 +- .../{models/models.dart => types.dart} | 2 +- .../lib/src/embeddings/openai.dart | 4 +- .../langchain_openai/lib/src/llms/llms.dart | 2 +- .../lib/src/llms/{models => }/mappers.dart | 3 +- .../langchain_openai/lib/src/llms/openai.dart | 7 +- .../llms/{models/models.dart => types.dart} | 2 +- .../lib/src/{agents => }/tools/dall_e.dart | 4 +- .../langchain_openai/lib/src/tools/tools.dart | 2 + .../models/models.dart => tools/types.dart} | 4 +- packages/langchain_openai/pubspec.yaml | 4 +- .../langchain_openai/pubspec_overrides.yaml | 6 +- .../test/agents/functions_test.dart | 30 ++- .../test/chains/qa_with_sources_test.dart | 13 +- .../test/chat_models/anyscale_test.dart | 5 +- .../test/chat_models/chat_openai_test.dart | 6 +- .../test/chat_models/open_router_test.dart | 3 +- .../test/chat_models/together_ai_test.dart | 5 +- .../embeddings/openai_embeddings_test.dart | 2 +- .../together_ai_embeddings_test.dart | 2 +- .../test/llms/openai_test.dart | 3 +- .../test/{agents => }/tools/dall_e_test.dart | 4 +- .../example/langchain_pinecone_example.dart | 2 +- .../vector_stores/{models => }/mappers.dart | 2 +- .../lib/src/vector_stores/pinecone.dart | 7 +- .../{models/models.dart => types.dart} | 2 +- .../lib/src/vector_stores/vector_stores.dart | 2 +- packages/langchain_pinecone/pubspec.yaml | 2 +- .../langchain_pinecone/pubspec_overrides.yaml | 6 +- .../test/vector_stores/pinecone_test.dart | 2 +- .../{models/models.dart => types.dart} | 2 +- .../lib/src/vector_stores/vector_stores.dart | 2 +- packages/langchain_supabase/pubspec.yaml | 4 +- .../langchain_supabase/pubspec_overrides.yaml | 6 +- .../test/vector_stores/supabase_test.dart | 6 +- packages/langchain_weaviate/pubspec.yaml | 7 - .../langchain_weaviate/pubspec_overrides.yaml | 4 - packages/langchain_wikipedia/pubspec.yaml | 7 - .../pubspec_overrides.yaml | 4 - packages/langchain_wolfram/pubspec.yaml | 7 - .../langchain_wolfram/pubspec_overrides.yaml | 4 - 372 files changed, 1263 insertions(+), 1325 deletions(-) rename packages/langchain/lib/src/agents/{executors.dart => executor.dart} (96%) delete mode 100644 packages/langchain/lib/src/agents/tools/tools.dart create mode 100644 packages/langchain/lib/src/chat_history/chat_history.dart rename packages/langchain/lib/src/{memory/chat_message_history => chat_history}/in_memory.dart (90%) create mode 100644 packages/langchain/lib/src/chat_models/chat_models.dart delete mode 100644 packages/langchain/lib/src/core/base.dart delete mode 100644 packages/langchain/lib/src/core/core.dart create mode 100644 packages/langchain/lib/src/document_loaders/document_loaders.dart delete mode 100644 packages/langchain/lib/src/documents/stores/base.dart delete mode 100644 packages/langchain/lib/src/documents/stores/in_memory.dart delete mode 100644 packages/langchain/lib/src/documents/stores/stores.dart delete mode 100644 packages/langchain/lib/src/documents/transformers/transformers.dart delete mode 100644 packages/langchain/lib/src/documents/vector_stores/vector_stores.dart rename packages/langchain/lib/src/{documents => }/embeddings/cache.dart (96%) create mode 100644 packages/langchain/lib/src/embeddings/embeddings.dart create mode 100644 packages/langchain/lib/src/exceptions/exceptions.dart create mode 100644 packages/langchain/lib/src/langchain/langchain.dart create mode 100644 packages/langchain/lib/src/language_models/language_models.dart create mode 100644 packages/langchain/lib/src/llms/llms.dart delete mode 100644 packages/langchain/lib/src/memory/chat_message_history/chat_message_history.dart delete mode 100644 packages/langchain/lib/src/model_io/language_models/language_models.dart delete mode 100644 packages/langchain/lib/src/model_io/model_io.dart delete mode 100644 packages/langchain/lib/src/model_io/output_parsers/output_parsers.dart create mode 100644 packages/langchain/lib/src/output_parsers/output_parsers.dart create mode 100644 packages/langchain/lib/src/prompts/prompts.dart create mode 100644 packages/langchain/lib/src/retrievers/retrievers.dart create mode 100644 packages/langchain/lib/src/runnables/runnables.dart rename packages/langchain/lib/src/{storage => stores}/encoder_backed.dart (97%) rename packages/langchain/lib/src/{storage => stores}/file_system_io.dart (97%) rename packages/langchain/lib/src/{storage => stores}/file_system_stub.dart (96%) rename packages/langchain/lib/src/{storage => stores}/in_memory.dart (95%) rename packages/langchain/lib/src/{storage/storage.dart => stores/stores.dart} (73%) rename packages/langchain/lib/src/{documents/transformers => }/text_splitters/character.dart (100%) rename packages/langchain/lib/src/{documents/transformers => }/text_splitters/code.dart (100%) rename packages/langchain/lib/src/{documents/transformers => }/text_splitters/recursive_character.dart (100%) rename packages/langchain/lib/src/{documents/transformers => }/text_splitters/text_splitter.dart (98%) rename packages/langchain/lib/src/{documents/transformers => }/text_splitters/text_splitters.dart (100%) rename packages/langchain/lib/src/{documents/transformers => }/text_splitters/utils.dart (100%) rename packages/langchain/lib/src/{agents => }/tools/exception.dart (89%) rename packages/langchain/lib/src/{agents => }/tools/invalid.dart (91%) create mode 100644 packages/langchain/lib/src/tools/tools.dart delete mode 100644 packages/langchain/lib/src/utils/utils.dart rename packages/langchain/lib/src/{documents => }/vector_stores/memory.dart (98%) create mode 100644 packages/langchain/lib/src/vector_stores/vector_stores.dart create mode 100644 packages/langchain/pubspec_overrides.yaml rename packages/langchain/test/agents/{executors_test.dart => executor_test.dart} (100%) rename packages/langchain/test/{memory/chat_message_history => chat_history}/in_memory_test.dart (100%) delete mode 100644 packages/langchain/test/documents/stores/in_memory.dart rename packages/langchain/test/{documents => }/embeddings/cache.dart (100%) rename packages/langchain/test/{storage => stores}/encoder_backed.dart (100%) rename packages/langchain/test/{storage => stores}/file_system.dart (100%) rename packages/langchain/test/{storage => stores}/in_memory.dart (100%) rename packages/langchain/test/{documents/transformers => }/text_splitters/character_test.dart (91%) rename packages/langchain/test/{documents/transformers => }/text_splitters/code_test.dart (100%) rename packages/langchain/test/{documents/transformers => }/text_splitters/recursive_character_test.dart (100%) rename packages/langchain/test/{documents/transformers => }/text_splitters/utils_test.dart (93%) rename packages/langchain/test/{documents => }/vector_stores/memory_test.dart (100%) delete mode 100644 packages/langchain_amazon/pubspec_overrides.yaml delete mode 100644 packages/langchain_anthropic/pubspec_overrides.yaml rename packages/langchain_chroma/lib/src/vector_stores/{models/models.dart => types.dart} (95%) delete mode 100644 packages/langchain_cohere/pubspec_overrides.yaml rename packages/{langchain/lib/src/documents/loaders => langchain_community/lib/src/document_loaders}/csv.dart (98%) rename packages/{langchain/lib/src/documents/loaders/loaders.dart => langchain_community/lib/src/document_loaders/document_loaders.dart} (79%) rename packages/{langchain/lib/src/documents/loaders => langchain_community/lib/src/document_loaders}/json.dart (96%) rename packages/{langchain/lib/src/documents/loaders => langchain_community/lib/src/document_loaders}/text.dart (90%) rename packages/{langchain/lib/src/documents/loaders => langchain_community/lib/src/document_loaders}/web.dart (95%) rename packages/{langchain/lib/src/agents => langchain_community/lib/src}/tools/calculator.dart (93%) create mode 100644 packages/langchain_community/lib/src/tools/tools.dart create mode 100644 packages/langchain_community/pubspec_overrides.yaml rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/assets/example.txt (100%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/assets/example_1.csv (100%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/assets/example_1.json (100%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/assets/example_2.csv (100%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/assets/example_2.json (100%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/assets/example_2.tsv (100%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/csv_test.dart (89%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/json_test.dart (86%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/text_test.dart (78%) rename packages/{langchain/test/documents/loaders => langchain_community/test/document_loaders}/web_test.dart (93%) rename packages/{langchain/test/agents => langchain_community/test}/tools/calculator_test.dart (83%) create mode 100644 packages/langchain_core/lib/agents.dart create mode 100644 packages/langchain_core/lib/chains.dart create mode 100644 packages/langchain_core/lib/chat_history.dart create mode 100644 packages/langchain_core/lib/chat_models.dart create mode 100644 packages/langchain_core/lib/document_loaders.dart create mode 100644 packages/langchain_core/lib/documents.dart create mode 100644 packages/langchain_core/lib/embeddings.dart create mode 100644 packages/langchain_core/lib/exceptions.dart create mode 100644 packages/langchain_core/lib/langchain.dart delete mode 100644 packages/langchain_core/lib/langchain_core.dart create mode 100644 packages/langchain_core/lib/language_models.dart create mode 100644 packages/langchain_core/lib/llms.dart create mode 100644 packages/langchain_core/lib/memory.dart create mode 100644 packages/langchain_core/lib/output_parsers.dart create mode 100644 packages/langchain_core/lib/prompts.dart create mode 100644 packages/langchain_core/lib/retrievers.dart create mode 100644 packages/langchain_core/lib/runnables.dart create mode 100644 packages/langchain_core/lib/src/agents/agents.dart rename packages/{langchain/lib/src/agents/agent.dart => langchain_core/lib/src/agents/base.dart} (80%) rename packages/{langchain/lib/src/agents/models/models.dart => langchain_core/lib/src/agents/types.dart} (96%) create mode 100644 packages/langchain_core/lib/src/chains/base.dart create mode 100644 packages/langchain_core/lib/src/chains/chains.dart rename packages/{langchain => langchain_core}/lib/src/chains/llm_chain.dart (87%) rename packages/{langchain/lib/src/chains/models/models.dart => langchain_core/lib/src/chains/types.dart} (90%) rename packages/{langchain/lib/src/memory/chat_message_history => langchain_core/lib/src/chat_history}/base.dart (96%) create mode 100644 packages/langchain_core/lib/src/chat_history/chat_history.dart rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/chat_models/base.dart (97%) create mode 100644 packages/langchain_core/lib/src/chat_models/chat_models.dart rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/chat_models/fake.dart (97%) rename packages/{langchain/lib/src/model_io/chat_models/models/models.dart => langchain_core/lib/src/chat_models/types.dart} (99%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/chat_models/utils.dart (97%) rename packages/{langchain/lib/src/documents/loaders => langchain_core/lib/src/document_loaders}/base.dart (65%) create mode 100644 packages/langchain_core/lib/src/document_loaders/document_loaders.dart rename packages/{langchain/lib/src/documents/models/models.dart => langchain_core/lib/src/documents/document.dart} (100%) create mode 100644 packages/langchain_core/lib/src/documents/documents.dart rename packages/{langchain/lib/src/documents/transformers/base.dart => langchain_core/lib/src/documents/transformer.dart} (88%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/embeddings/base.dart (90%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/embeddings/embeddings.dart (65%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/embeddings/fake.dart (97%) rename packages/{langchain/lib/src/utils/exception.dart => langchain_core/lib/src/exceptions/base.dart} (100%) create mode 100644 packages/langchain_core/lib/src/exceptions/exceptions.dart create mode 100644 packages/langchain_core/lib/src/langchain/base.dart create mode 100644 packages/langchain_core/lib/src/langchain/langchain.dart create mode 100644 packages/langchain_core/lib/src/langchain/types.dart rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/language_models/base.dart (96%) create mode 100644 packages/langchain_core/lib/src/language_models/language_models.dart rename packages/{langchain/lib/src/model_io/language_models/models/models.dart => langchain_core/lib/src/language_models/types.dart} (82%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/llms/base.dart (94%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/llms/fake.dart (97%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/llms/llms.dart (57%) rename packages/{langchain/lib/src/model_io/llms/models/models.dart => langchain_core/lib/src/llms/types.dart} (95%) rename packages/{langchain => langchain_core}/lib/src/memory/base.dart (97%) rename packages/{langchain => langchain_core}/lib/src/memory/chat.dart (85%) create mode 100644 packages/langchain_core/lib/src/memory/memory.dart rename packages/{langchain/lib/src/memory/models/models.dart => langchain_core/lib/src/memory/types.dart} (100%) rename packages/{langchain => langchain_core}/lib/src/memory/utils.dart (83%) rename packages/{langchain/lib/src/model_io/output_parsers/output_parser.dart => langchain_core/lib/src/output_parsers/base.dart} (95%) rename packages/{langchain/lib/src/model_io/output_parsers/models/models.dart => langchain_core/lib/src/output_parsers/exceptions.dart} (94%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/output_parsers/functions.dart (97%) create mode 100644 packages/langchain_core/lib/src/output_parsers/output_parsers.dart rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/output_parsers/string.dart (93%) rename packages/{langchain/lib/src/model_io/output_parsers/utils/json.dart => langchain_core/lib/src/output_parsers/utils.dart} (100%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/base_chat_message_prompt.dart (98%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/base_chat_prompt.dart (93%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/base_prompt.dart (98%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/chat_prompt.dart (99%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/pipeline.dart (99%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/prompt.dart (99%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/prompt_selector.dart (100%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/prompts.dart (89%) rename packages/{langchain/lib/src/model_io => langchain_core/lib/src}/prompts/template.dart (99%) rename packages/{langchain/lib/src/model_io/prompts/models/models.dart => langchain_core/lib/src/prompts/types.dart} (96%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/retrievers/base.dart (89%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/retrievers/fake.dart (89%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/retrievers/retrievers.dart (70%) rename packages/{langchain/lib/src/documents/retrievers/models/models.dart => langchain_core/lib/src/retrievers/types.dart} (87%) rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/retrievers/vector_store.dart (88%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/binding.dart (97%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/function.dart (97%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/input_getter.dart (98%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/input_map.dart (96%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/map.dart (97%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/passthrough.dart (96%) rename packages/{langchain/lib/src/core/runnable/base.dart => langchain_core/lib/src/runnables/runnable.dart} (99%) rename packages/{langchain/lib/src/core/runnable/extensions.dart => langchain_core/lib/src/runnables/runnable_ext.dart} (94%) rename packages/{langchain/lib/src/core/runnable/runnable.dart => langchain_core/lib/src/runnables/runnables.dart} (66%) rename packages/{langchain/lib/src/core/runnable => langchain_core/lib/src/runnables}/sequence.dart (98%) rename packages/{langchain/lib/src/storage => langchain_core/lib/src/stores}/base.dart (100%) create mode 100644 packages/langchain_core/lib/src/stores/stores.dart rename packages/{langchain/lib/src/agents => langchain_core/lib/src}/tools/base.dart (98%) create mode 100644 packages/langchain_core/lib/src/tools/fake.dart rename packages/{langchain/lib/src/model_io/chat_models/chat_models.dart => langchain_core/lib/src/tools/tools.dart} (57%) rename packages/{langchain/lib/src/agents/tools/models/models.dart => langchain_core/lib/src/tools/types.dart} (85%) rename packages/{langchain => langchain_core}/lib/src/utils/chunk.dart (100%) create mode 100644 packages/langchain_core/lib/src/utils/utils.dart rename packages/{langchain/lib/src/documents => langchain_core/lib/src}/vector_stores/base.dart (98%) rename packages/{langchain/lib/src/documents/vector_stores/models/models.dart => langchain_core/lib/src/vector_stores/types.dart} (100%) create mode 100644 packages/langchain_core/lib/src/vector_stores/vector_stores.dart create mode 100644 packages/langchain_core/lib/stores.dart create mode 100644 packages/langchain_core/lib/tools.dart create mode 100644 packages/langchain_core/lib/utils.dart create mode 100644 packages/langchain_core/lib/vector_stores.dart rename packages/{langchain => langchain_core}/test/chains/llm_chain_test.dart (95%) rename packages/{langchain/test/model_io => langchain_core/test}/chat_models/fake_test.dart (84%) rename packages/{langchain/test/documents => langchain_core/test}/embeddings/fake.dart (96%) rename packages/{langchain/test/model_io => langchain_core/test}/output_parsers/functions_test.dart (96%) rename packages/{langchain/test/model_io => langchain_core/test}/output_parsers/string_test.dart (83%) rename packages/{langchain/test/model_io/output_parsers/utils/json_test.dart => langchain_core/test/output_parsers/utils_test.dart} (94%) rename packages/{langchain/test/model_io => langchain_core/test}/prompts/assets/prompt_file.txt (100%) rename packages/{langchain/test/model_io => langchain_core/test}/prompts/chat_prompt_test.dart (98%) rename packages/{langchain/test/model_io => langchain_core/test}/prompts/pipeline_test.dart (97%) rename packages/{langchain/test/model_io => langchain_core/test}/prompts/prompt_test.dart (98%) rename packages/{langchain/test/model_io => langchain_core/test}/prompts/template_test.dart (92%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/binding_test.dart (93%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/function_test.dart (84%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/input_getter_test.dart (96%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/input_map_test.dart (76%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/invoke_test.dart (65%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/map_test.dart (87%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/passthrough_test.dart (84%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/sequence_test.dart (88%) rename packages/{langchain/test/core/runnable => langchain_core/test/runnables}/stream_test.dart (69%) rename packages/{langchain/test/agents => langchain_core/test}/tools/base_test.dart (95%) rename packages/{langchain => langchain_core}/test/utils/chunk_test.dart (95%) rename packages/langchain_google/lib/src/chat_models/google_ai/{models => }/mappers.dart (97%) rename packages/langchain_google/lib/src/chat_models/google_ai/{models/models.dart => types.dart} (99%) rename packages/langchain_google/lib/src/chat_models/vertex_ai/{models => }/mappers.dart (96%) rename packages/langchain_google/lib/src/chat_models/vertex_ai/{models/models.dart => types.dart} (98%) delete mode 100644 packages/langchain_google/lib/src/doc_loaders/doc_loaders.dart rename packages/langchain_google/lib/src/llms/{models => vertex_ai}/mappers.dart (93%) rename packages/langchain_google/lib/src/llms/{models/models.dart => vertex_ai/types.dart} (99%) rename packages/langchain_google/lib/src/llms/{ => vertex_ai}/vertex_ai.dart (98%) rename packages/langchain_google/lib/src/vector_stores/{models => }/mappers.dart (95%) rename packages/langchain_google/lib/src/vector_stores/{models/models.dart => types.dart} (97%) delete mode 100644 packages/langchain_huggingface/pubspec_overrides.yaml delete mode 100644 packages/langchain_microsoft/pubspec_overrides.yaml rename packages/langchain_mistralai/lib/src/chat_models/{models => }/mappers.dart (96%) rename packages/langchain_mistralai/lib/src/chat_models/{models/models.dart => types.dart} (97%) rename packages/langchain_ollama/lib/src/chat_models/{models => }/mappers.dart (97%) rename packages/langchain_ollama/lib/src/chat_models/{models/models.dart => types.dart} (99%) rename packages/langchain_ollama/lib/src/llms/{models => }/mappers.dart (92%) rename packages/langchain_ollama/lib/src/llms/{models/models.dart => types.dart} (99%) delete mode 100644 packages/langchain_openai/lib/src/agents/tools/tools.dart rename packages/langchain_openai/lib/src/chat_models/{models => }/mappers.dart (98%) rename packages/langchain_openai/lib/src/chat_models/{models/models.dart => types.dart} (99%) rename packages/langchain_openai/lib/src/llms/{models => }/mappers.dart (92%) rename packages/langchain_openai/lib/src/llms/{models/models.dart => types.dart} (99%) rename packages/langchain_openai/lib/src/{agents => }/tools/dall_e.dart (98%) create mode 100644 packages/langchain_openai/lib/src/tools/tools.dart rename packages/langchain_openai/lib/src/{agents/tools/models/models.dart => tools/types.dart} (97%) rename packages/langchain_openai/test/{agents => }/tools/dall_e_test.dart (92%) rename packages/langchain_pinecone/lib/src/vector_stores/{models => }/mappers.dart (93%) rename packages/langchain_pinecone/lib/src/vector_stores/{models/models.dart => types.dart} (97%) rename packages/langchain_supabase/lib/src/vector_stores/{models/models.dart => types.dart} (93%) delete mode 100644 packages/langchain_weaviate/pubspec_overrides.yaml delete mode 100644 packages/langchain_wikipedia/pubspec_overrides.yaml delete mode 100644 packages/langchain_wolfram/pubspec_overrides.yaml diff --git a/examples/browser_summarizer/lib/popup/bloc/pop_up_screen_cubit.dart b/examples/browser_summarizer/lib/popup/bloc/pop_up_screen_cubit.dart index d82f7bc6..133b91b1 100644 --- a/examples/browser_summarizer/lib/popup/bloc/pop_up_screen_cubit.dart +++ b/examples/browser_summarizer/lib/popup/bloc/pop_up_screen_cubit.dart @@ -5,6 +5,7 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:langchain_openai/langchain_openai.dart'; import '../../chrome/chrome_api.dart'; diff --git a/examples/browser_summarizer/pubspec.lock b/examples/browser_summarizer/pubspec.lock index 7be6f903..6bc7a4ed 100644 --- a/examples/browser_summarizer/pubspec.lock +++ b/examples/browser_summarizer/pubspec.lock @@ -207,10 +207,10 @@ packages: dependency: transitive description: name: json_path - sha256: b1a3e5e34c862a6ca598e226e725647e462bde9fd98dbfa21bb53e105efeb177 + sha256: "149d32ceb7dc22422ea6d09e401fd688f54e1343bc9ff8c3cb1900ca3b1ad8b1" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.1" langchain: dependency: "direct main" description: @@ -218,6 +218,20 @@ packages: relative: true source: path version: "0.4.2" + langchain_community: + dependency: "direct main" + description: + path: "../../packages/langchain_community" + relative: true + source: path + version: "0.0.1-dev.2" + langchain_core: + dependency: "direct overridden" + description: + path: "../../packages/langchain_core" + relative: true + source: path + version: "0.0.1-dev.2" langchain_openai: dependency: "direct main" description: diff --git a/examples/browser_summarizer/pubspec.yaml b/examples/browser_summarizer/pubspec.yaml index 838f456b..c1ee85ab 100644 --- a/examples/browser_summarizer/pubspec.yaml +++ b/examples/browser_summarizer/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0 publish_to: none environment: - sdk: '>=3.0.5 <4.0.0' + sdk: ">=3.0.0 <4.0.0" dependencies: flutter: @@ -14,6 +14,7 @@ dependencies: flutter_markdown: ^0.6.17 js: ^0.6.7 langchain: ^0.4.2 + langchain_community: 0.0.1-dev.2 langchain_openai: ^0.4.1 shared_preferences: ^2.2.0 diff --git a/examples/browser_summarizer/pubspec_overrides.yaml b/examples/browser_summarizer/pubspec_overrides.yaml index 12a1828d..3947b2ae 100644 --- a/examples/browser_summarizer/pubspec_overrides.yaml +++ b/examples/browser_summarizer/pubspec_overrides.yaml @@ -1,7 +1,11 @@ -# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart +# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart,langchain_core,langchain_community dependency_overrides: langchain: path: ../../packages/langchain + langchain_community: + path: ../../packages/langchain_community + langchain_core: + path: ../../packages/langchain_core langchain_openai: path: ../../packages/langchain_openai openai_dart: diff --git a/examples/docs_examples/bin/expression_language/cookbook/tools.dart b/examples/docs_examples/bin/expression_language/cookbook/tools.dart index 58ea66cc..7e919179 100644 --- a/examples/docs_examples/bin/expression_language/cookbook/tools.dart +++ b/examples/docs_examples/bin/expression_language/cookbook/tools.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:langchain_openai/langchain_openai.dart'; void main(final List arguments) async { diff --git a/examples/docs_examples/bin/expression_language/interface.dart b/examples/docs_examples/bin/expression_language/interface.dart index e43c8ddb..009390df 100644 --- a/examples/docs_examples/bin/expression_language/interface.dart +++ b/examples/docs_examples/bin/expression_language/interface.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:langchain/langchain.dart'; import 'package:langchain_chroma/langchain_chroma.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:langchain_openai/langchain_openai.dart'; void main(final List arguments) async { diff --git a/examples/docs_examples/bin/modules/agents/agent_types/openai_functions_agent.dart b/examples/docs_examples/bin/modules/agents/agent_types/openai_functions_agent.dart index 0df142ee..00a59dcf 100644 --- a/examples/docs_examples/bin/modules/agents/agent_types/openai_functions_agent.dart +++ b/examples/docs_examples/bin/modules/agents/agent_types/openai_functions_agent.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:langchain_openai/langchain_openai.dart'; void main() async { diff --git a/examples/docs_examples/bin/modules/agents/tools/calculator.dart b/examples/docs_examples/bin/modules/agents/tools/calculator.dart index f08fcb56..2061ff92 100644 --- a/examples/docs_examples/bin/modules/agents/tools/calculator.dart +++ b/examples/docs_examples/bin/modules/agents/tools/calculator.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:langchain_openai/langchain_openai.dart'; void main() async { diff --git a/examples/docs_examples/bin/modules/agents/tools/openai_dalle.dart b/examples/docs_examples/bin/modules/agents/tools/openai_dalle.dart index 4d146560..d9c5a120 100644 --- a/examples/docs_examples/bin/modules/agents/tools/openai_dalle.dart +++ b/examples/docs_examples/bin/modules/agents/tools/openai_dalle.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:langchain_openai/langchain_openai.dart'; void main() async { diff --git a/examples/docs_examples/pubspec.lock b/examples/docs_examples/pubspec.lock index ec84e4bc..84a4bca8 100644 --- a/examples/docs_examples/pubspec.lock +++ b/examples/docs_examples/pubspec.lock @@ -195,10 +195,10 @@ packages: dependency: transitive description: name: json_path - sha256: b1a3e5e34c862a6ca598e226e725647e462bde9fd98dbfa21bb53e105efeb177 + sha256: "149d32ceb7dc22422ea6d09e401fd688f54e1343bc9ff8c3cb1900ca3b1ad8b1" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.1" langchain: dependency: "direct main" description: @@ -213,6 +213,20 @@ packages: relative: true source: path version: "0.1.1" + langchain_community: + dependency: "direct main" + description: + path: "../../packages/langchain_community" + relative: true + source: path + version: "0.0.1-dev.2" + langchain_core: + dependency: "direct overridden" + description: + path: "../../packages/langchain_core" + relative: true + source: path + version: "0.0.1-dev.2" langchain_google: dependency: "direct main" description: diff --git a/examples/docs_examples/pubspec.yaml b/examples/docs_examples/pubspec.yaml index 1b8fdb8a..a03a84fc 100644 --- a/examples/docs_examples/pubspec.yaml +++ b/examples/docs_examples/pubspec.yaml @@ -4,11 +4,12 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.5 + sdk: ">=3.0.0 <4.0.0" dependencies: langchain: ^0.4.2 langchain_chroma: ^0.1.1 + langchain_community: 0.0.1-dev.2 langchain_google: ^0.2.4 langchain_mistralai: ^0.0.3 langchain_ollama: ^0.0.4 diff --git a/examples/docs_examples/pubspec_overrides.yaml b/examples/docs_examples/pubspec_overrides.yaml index d6bde39b..94d3894b 100644 --- a/examples/docs_examples/pubspec_overrides.yaml +++ b/examples/docs_examples/pubspec_overrides.yaml @@ -1,4 +1,4 @@ -# melos_managed_dependency_overrides: chromadb,googleai_dart,langchain,langchain_chroma,langchain_google,langchain_mistralai,langchain_ollama,langchain_openai,mistralai_dart,ollama_dart,openai_dart,vertex_ai +# melos_managed_dependency_overrides: chromadb,googleai_dart,langchain,langchain_chroma,langchain_google,langchain_mistralai,langchain_ollama,langchain_openai,mistralai_dart,ollama_dart,openai_dart,vertex_ai,langchain_core,langchain_community dependency_overrides: chromadb: path: ../../packages/chromadb @@ -8,6 +8,10 @@ dependency_overrides: path: ../../packages/langchain langchain_chroma: path: ../../packages/langchain_chroma + langchain_community: + path: ../../packages/langchain_community + langchain_core: + path: ../../packages/langchain_core langchain_google: path: ../../packages/langchain_google langchain_mistralai: diff --git a/examples/hello_world_backend/pubspec.lock b/examples/hello_world_backend/pubspec.lock index be56a767..14b17357 100644 --- a/examples/hello_world_backend/pubspec.lock +++ b/examples/hello_world_backend/pubspec.lock @@ -9,14 +9,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" - beautiful_soup_dart: - dependency: transitive - description: - name: beautiful_soup_dart - sha256: "57e23946c85776dd9515a4e9a14263fff37dbedbd559bc4412bf565886e12b10" - url: "https://pub.dev" - source: hosted - version: "0.3.0" characters: dependency: transitive description: @@ -49,22 +41,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - csslib: - dependency: transitive - description: - name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - csv: - dependency: transitive - description: - name: csv - sha256: "63ed2871dd6471193dffc52c0e6c76fb86269c00244d244297abbb355c84a86e" - url: "https://pub.dev" - source: hosted - version: "5.1.1" fetch_api: dependency: transitive description: @@ -89,14 +65,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" - html: - dependency: transitive - description: - name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" - source: hosted - version: "0.15.4" http: dependency: transitive description: @@ -121,14 +89,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - iregexp: - dependency: transitive - description: - name: iregexp - sha256: "143859dcaeecf6f683102786762d70a47ef8441a0d2287a158172d32d38799cf" - url: "https://pub.dev" - source: hosted - version: "0.1.2" js: dependency: transitive description: @@ -145,14 +105,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.8.1" - json_path: - dependency: transitive - description: - name: json_path - sha256: b1a3e5e34c862a6ca598e226e725647e462bde9fd98dbfa21bb53e105efeb177 - url: "https://pub.dev" - source: hosted - version: "0.7.0" langchain: dependency: "direct main" description: @@ -160,6 +112,13 @@ packages: relative: true source: path version: "0.4.2" + langchain_core: + dependency: "direct overridden" + description: + path: "../../packages/langchain_core" + relative: true + source: path + version: "0.0.1-dev.2" langchain_openai: dependency: "direct main" description: @@ -175,22 +134,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - math_expressions: - dependency: transitive - description: - name: math_expressions - sha256: "3576593617c3870d75728a751f6ec6e606706d44e363f088ac394b5a28a98064" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - maybe_just_nothing: - dependency: transitive - description: - name: maybe_just_nothing - sha256: "0c06326e26d08f6ed43247404376366dc4d756cef23a4f1db765f546224c35e0" - url: "https://pub.dev" - source: hosted - version: "0.5.3" meta: dependency: transitive description: @@ -214,22 +157,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" - source: hosted - version: "6.0.2" - rfc_6901: - dependency: transitive - description: - name: rfc_6901 - sha256: df1bbfa3d023009598f19636d6114c6ac1e0b7bb7bf6a260f0e6e6ce91416820 - url: "https://pub.dev" - source: hosted - version: "0.2.0" shelf: dependency: "direct main" description: @@ -310,14 +237,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" web: dependency: transitive description: diff --git a/examples/hello_world_backend/pubspec.yaml b/examples/hello_world_backend/pubspec.yaml index a0d6f413..99733d9b 100644 --- a/examples/hello_world_backend/pubspec.yaml +++ b/examples/hello_world_backend/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.5 + sdk: ">=3.0.0 <4.0.0" dependencies: langchain: ^0.4.2 diff --git a/examples/hello_world_backend/pubspec_overrides.yaml b/examples/hello_world_backend/pubspec_overrides.yaml index 12a1828d..93b5421a 100644 --- a/examples/hello_world_backend/pubspec_overrides.yaml +++ b/examples/hello_world_backend/pubspec_overrides.yaml @@ -1,7 +1,9 @@ -# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart +# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart,langchain_core dependency_overrides: langchain: path: ../../packages/langchain + langchain_core: + path: ../../packages/langchain_core langchain_openai: path: ../../packages/langchain_openai openai_dart: diff --git a/examples/hello_world_cli/pubspec.lock b/examples/hello_world_cli/pubspec.lock index b54901b8..e1d83695 100644 --- a/examples/hello_world_cli/pubspec.lock +++ b/examples/hello_world_cli/pubspec.lock @@ -9,14 +9,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" - beautiful_soup_dart: - dependency: transitive - description: - name: beautiful_soup_dart - sha256: "57e23946c85776dd9515a4e9a14263fff37dbedbd559bc4412bf565886e12b10" - url: "https://pub.dev" - source: hosted - version: "0.3.0" characters: dependency: transitive description: @@ -49,22 +41,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - csslib: - dependency: transitive - description: - name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - csv: - dependency: transitive - description: - name: csv - sha256: "63ed2871dd6471193dffc52c0e6c76fb86269c00244d244297abbb355c84a86e" - url: "https://pub.dev" - source: hosted - version: "5.1.1" fetch_api: dependency: transitive description: @@ -89,14 +65,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" - html: - dependency: transitive - description: - name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" - source: hosted - version: "0.15.4" http: dependency: transitive description: @@ -113,14 +81,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - iregexp: - dependency: transitive - description: - name: iregexp - sha256: "143859dcaeecf6f683102786762d70a47ef8441a0d2287a158172d32d38799cf" - url: "https://pub.dev" - source: hosted - version: "0.1.2" js: dependency: transitive description: @@ -137,14 +97,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.8.1" - json_path: - dependency: transitive - description: - name: json_path - sha256: b1a3e5e34c862a6ca598e226e725647e462bde9fd98dbfa21bb53e105efeb177 - url: "https://pub.dev" - source: hosted - version: "0.7.0" langchain: dependency: "direct main" description: @@ -152,6 +104,13 @@ packages: relative: true source: path version: "0.4.2" + langchain_core: + dependency: "direct overridden" + description: + path: "../../packages/langchain_core" + relative: true + source: path + version: "0.0.1-dev.2" langchain_openai: dependency: "direct main" description: @@ -167,22 +126,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - math_expressions: - dependency: transitive - description: - name: math_expressions - sha256: "3576593617c3870d75728a751f6ec6e606706d44e363f088ac394b5a28a98064" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - maybe_just_nothing: - dependency: transitive - description: - name: maybe_just_nothing - sha256: "0c06326e26d08f6ed43247404376366dc4d756cef23a4f1db765f546224c35e0" - url: "https://pub.dev" - source: hosted - version: "0.5.3" meta: dependency: transitive description: @@ -206,22 +149,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" - source: hosted - version: "6.0.2" - rfc_6901: - dependency: transitive - description: - name: rfc_6901 - sha256: df1bbfa3d023009598f19636d6114c6ac1e0b7bb7bf6a260f0e6e6ce91416820 - url: "https://pub.dev" - source: hosted - version: "0.2.0" source_span: dependency: transitive description: @@ -270,14 +197,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" web: dependency: transitive description: diff --git a/examples/hello_world_cli/pubspec.yaml b/examples/hello_world_cli/pubspec.yaml index 6d1fd370..a2ddb1fa 100644 --- a/examples/hello_world_cli/pubspec.yaml +++ b/examples/hello_world_cli/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.5 + sdk: ">=3.0.0 <4.0.0" dependencies: langchain: ^0.4.2 diff --git a/examples/hello_world_cli/pubspec_overrides.yaml b/examples/hello_world_cli/pubspec_overrides.yaml index 12a1828d..93b5421a 100644 --- a/examples/hello_world_cli/pubspec_overrides.yaml +++ b/examples/hello_world_cli/pubspec_overrides.yaml @@ -1,7 +1,9 @@ -# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart +# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart,langchain_core dependency_overrides: langchain: path: ../../packages/langchain + langchain_core: + path: ../../packages/langchain_core langchain_openai: path: ../../packages/langchain_openai openai_dart: diff --git a/examples/hello_world_flutter/pubspec.lock b/examples/hello_world_flutter/pubspec.lock index 40d9591d..de41bfc7 100644 --- a/examples/hello_world_flutter/pubspec.lock +++ b/examples/hello_world_flutter/pubspec.lock @@ -9,14 +9,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" - beautiful_soup_dart: - dependency: transitive - description: - name: beautiful_soup_dart - sha256: "57e23946c85776dd9515a4e9a14263fff37dbedbd559bc4412bf565886e12b10" - url: "https://pub.dev" - source: hosted - version: "0.3.0" bloc: dependency: transitive description: @@ -57,22 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - csslib: - dependency: transitive - description: - name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - csv: - dependency: transitive - description: - name: csv - sha256: "63ed2871dd6471193dffc52c0e6c76fb86269c00244d244297abbb355c84a86e" - url: "https://pub.dev" - source: hosted - version: "5.1.1" equatable: dependency: "direct main" description: @@ -118,14 +94,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" - html: - dependency: transitive - description: - name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" - source: hosted - version: "0.15.4" http: dependency: transitive description: @@ -142,14 +110,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - iregexp: - dependency: transitive - description: - name: iregexp - sha256: "143859dcaeecf6f683102786762d70a47ef8441a0d2287a158172d32d38799cf" - url: "https://pub.dev" - source: hosted - version: "0.1.2" js: dependency: transitive description: @@ -166,14 +126,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.8.1" - json_path: - dependency: transitive - description: - name: json_path - sha256: b1a3e5e34c862a6ca598e226e725647e462bde9fd98dbfa21bb53e105efeb177 - url: "https://pub.dev" - source: hosted - version: "0.7.0" langchain: dependency: "direct main" description: @@ -181,6 +133,13 @@ packages: relative: true source: path version: "0.4.2" + langchain_core: + dependency: "direct overridden" + description: + path: "../../packages/langchain_core" + relative: true + source: path + version: "0.0.1-dev.2" langchain_openai: dependency: "direct main" description: @@ -204,22 +163,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.8.0" - math_expressions: - dependency: transitive - description: - name: math_expressions - sha256: "3576593617c3870d75728a751f6ec6e606706d44e363f088ac394b5a28a98064" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - maybe_just_nothing: - dependency: transitive - description: - name: maybe_just_nothing - sha256: "0c06326e26d08f6ed43247404376366dc4d756cef23a4f1db765f546224c35e0" - url: "https://pub.dev" - source: hosted - version: "0.5.3" meta: dependency: transitive description: @@ -251,14 +194,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" - source: hosted - version: "6.0.2" provider: dependency: transitive description: @@ -267,14 +202,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.1" - rfc_6901: - dependency: transitive - description: - name: rfc_6901 - sha256: df1bbfa3d023009598f19636d6114c6ac1e0b7bb7bf6a260f0e6e6ce91416820 - url: "https://pub.dev" - source: hosted - version: "0.2.0" sky_engine: dependency: transitive description: flutter diff --git a/examples/hello_world_flutter/pubspec.yaml b/examples/hello_world_flutter/pubspec.yaml index 477686e5..1b5f9e19 100644 --- a/examples/hello_world_flutter/pubspec.yaml +++ b/examples/hello_world_flutter/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0 publish_to: none environment: - sdk: '>=3.0.5 <4.0.0' + sdk: ">=3.0.0 <4.0.0" dependencies: flutter: diff --git a/examples/hello_world_flutter/pubspec_overrides.yaml b/examples/hello_world_flutter/pubspec_overrides.yaml index 12a1828d..93b5421a 100644 --- a/examples/hello_world_flutter/pubspec_overrides.yaml +++ b/examples/hello_world_flutter/pubspec_overrides.yaml @@ -1,7 +1,9 @@ -# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart +# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart,langchain_core dependency_overrides: langchain: path: ../../packages/langchain + langchain_core: + path: ../../packages/langchain_core langchain_openai: path: ../../packages/langchain_openai openai_dart: diff --git a/examples/vertex_ai_matching_engine_setup/pubspec.yaml b/examples/vertex_ai_matching_engine_setup/pubspec.yaml index d6174943..d71cdac4 100644 --- a/examples/vertex_ai_matching_engine_setup/pubspec.yaml +++ b/examples/vertex_ai_matching_engine_setup/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.0.5 + sdk: ">=3.0.0 <4.0.0" dependencies: gcloud: ^0.8.12 diff --git a/melos.yaml b/melos.yaml index 10328702..b3b75257 100644 --- a/melos.yaml +++ b/melos.yaml @@ -20,26 +20,68 @@ command: no-private: true bootstrap: usePubspecOverrides: true + environment: + sdk: ">=3.0.0 <4.0.0" + flutter: ">=3.19.0" + dependencies: + async: ^2.11.0 + beautiful_soup_dart: ^0.3.0 + characters: ^1.3.0 + collection: '>=1.17.0 <1.19.0' + cross_file: ^0.3.3+4 + crypto: ^3.0.3 + csv: ^5.1.0 + equatable: ^2.0.5 + fetch_client: ^1.0.2 + flutter_bloc: ^8.1.3 + flutter_markdown: ^0.6.17 + freezed_annotation: ^2.4.1 + gcloud: ^0.8.12 + googleapis: ^12.0.0 + googleapis_auth: ^1.4.1 + http: ^1.1.0 + js: ^0.6.7 + json_annotation: ^4.8.1 + json_path: ^0.7.0 + langchain_core: ^0.0.1-dev.2 + langchain_tiktoken: ^1.0.1 + math_expressions: ^2.4.0 + meta: ^1.9.1 + pinecone: ^0.7.2 + shared_preferences: ^2.2.0 + shelf: ^1.4.1 + shelf_router: ^1.1.4 + supabase: ^2.0.6 + uuid: ^4.0.0 + dev_dependencies: + build_runner: ^2.4.8 + freezed: ^2.4.7 + json_serializable: ^6.7.1 + openapi_spec: + git: + url: https://github.com/davidmigloz/openapi_spec.git + ref: e14c0adaac69e9482e9b57f68fc7964032cdd44c + test: ^1.25.2 scripts: lint: description: Run all static analysis checks run: melos run format && melos run analyze - + lint:diff: description: Run all static analysis checks failing fast run: melos run format:diff && melos run analyze:diff - + format: description: Format Dart files run: melos exec -- "dart format --fix ." - + format:diff: description: Format Flutter files run: melos exec --fail-fast -- "dart format --fix --set-exit-if-changed ." packageFilters: diff: origin/main...HEAD - + analyze: description: Run Flutter static analyzer run: melos exec -- "flutter analyze ." diff --git a/packages/chromadb/pubspec.yaml b/packages/chromadb/pubspec.yaml index c4db3752..c0f04fc0 100644 --- a/packages/chromadb/pubspec.yaml +++ b/packages/chromadb/pubspec.yaml @@ -24,7 +24,6 @@ dev_dependencies: build_runner: ^2.4.8 freezed: ^2.4.7 json_serializable: ^6.7.1 -# openapi_spec: ^0.7.8 openapi_spec: git: url: https://github.com/davidmigloz/openapi_spec.git diff --git a/packages/chromadb/test/chroma_client_test.dart b/packages/chromadb/test/chroma_client_test.dart index cb6e496e..4e68783a 100644 --- a/packages/chromadb/test/chroma_client_test.dart +++ b/packages/chromadb/test/chroma_client_test.dart @@ -1,12 +1,14 @@ @TestOn('vm') library; // Uses dart:io +import 'dart:io'; + import 'package:chromadb/chromadb.dart'; import 'package:test/test.dart'; // docker run -p 8000:8000 -e "ALLOW_RESET=TRUE" chromadb/chroma void main() async { - group('ChromaClient tests', skip: true, () { + group('ChromaClient tests', skip: Platform.environment.containsKey('CI'), () { final client = ChromaClient(); test('it should reset the database', () async { diff --git a/packages/langchain/example/langchain_example.dart b/packages/langchain/example/langchain_example.dart index 39c7c944..a8764ffb 100644 --- a/packages/langchain/example/langchain_example.dart +++ b/packages/langchain/example/langchain_example.dart @@ -2,14 +2,14 @@ import 'package:langchain/langchain.dart'; void main() async { - final llm = FakeListLLM( - responses: ['Why did the AI go on a diet? Because it had too many bytes!'], - ); final promptTemplate = PromptTemplate.fromTemplate( 'tell me a joke about {subject}', ); - final prompt = promptTemplate.format({'subject': 'AI'}); - final result = await llm(prompt); + final llm = FakeListLLM( + responses: ['Why did the AI go on a diet? Because it had too many bytes!'], + ); + final chain = promptTemplate.pipe(llm).pipe(const StringOutputParser()); + final result = await chain.invoke({'subject': 'AI'}); print(result); // Why did the AI go on a diet? Because it had too many bytes! } diff --git a/packages/langchain/lib/langchain.dart b/packages/langchain/lib/langchain.dart index 618fe721..5af0e2a9 100644 --- a/packages/langchain/lib/langchain.dart +++ b/packages/langchain/lib/langchain.dart @@ -3,9 +3,21 @@ library; export 'src/agents/agents.dart'; export 'src/chains/chains.dart'; -export 'src/core/core.dart'; +export 'src/chat_history/chat_history.dart'; +export 'src/chat_models/chat_models.dart'; +export 'src/document_loaders/document_loaders.dart'; export 'src/documents/documents.dart'; +export 'src/embeddings/embeddings.dart'; +export 'src/exceptions/exceptions.dart'; +export 'src/langchain/langchain.dart'; +export 'src/language_models/language_models.dart'; +export 'src/llms/llms.dart'; export 'src/memory/memory.dart'; -export 'src/model_io/model_io.dart'; -export 'src/storage/storage.dart'; -export 'src/utils/utils.dart'; +export 'src/output_parsers/output_parsers.dart'; +export 'src/prompts/prompts.dart'; +export 'src/retrievers/retrievers.dart'; +export 'src/runnables/runnables.dart'; +export 'src/stores/stores.dart'; +export 'src/text_splitters/text_splitters.dart'; +export 'src/tools/tools.dart'; +export 'src/vector_stores/vector_stores.dart'; diff --git a/packages/langchain/lib/src/agents/agents.dart b/packages/langchain/lib/src/agents/agents.dart index 95f30fad..ec89c95c 100644 --- a/packages/langchain/lib/src/agents/agents.dart +++ b/packages/langchain/lib/src/agents/agents.dart @@ -1,4 +1,3 @@ -export 'agent.dart'; -export 'executors.dart'; -export 'models/models.dart'; -export 'tools/tools.dart'; +export 'package:langchain_core/agents.dart'; + +export 'executor.dart'; diff --git a/packages/langchain/lib/src/agents/executors.dart b/packages/langchain/lib/src/agents/executor.dart similarity index 96% rename from packages/langchain/lib/src/agents/executors.dart rename to packages/langchain/lib/src/agents/executor.dart index 1dd1b1dc..94b8b93b 100644 --- a/packages/langchain/lib/src/agents/executors.dart +++ b/packages/langchain/lib/src/agents/executor.dart @@ -1,12 +1,11 @@ +import 'package:langchain_core/agents.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/tools.dart'; import 'package:meta/meta.dart'; -import '../chains/chains.dart'; -import '../model_io/output_parsers/models/models.dart'; -import 'agent.dart'; -import 'models/models.dart'; -import 'tools/base.dart'; -import 'tools/exception.dart'; -import 'tools/invalid.dart'; +import '../tools/exception.dart'; +import '../tools/invalid.dart'; /// {@template agent_executor} /// A chain responsible for executing the actions of an agent using tools. diff --git a/packages/langchain/lib/src/agents/tools/tools.dart b/packages/langchain/lib/src/agents/tools/tools.dart deleted file mode 100644 index 513af9a1..00000000 --- a/packages/langchain/lib/src/agents/tools/tools.dart +++ /dev/null @@ -1,3 +0,0 @@ -export 'base.dart'; -export 'calculator.dart'; -export 'models/models.dart'; diff --git a/packages/langchain/lib/src/chains/base.dart b/packages/langchain/lib/src/chains/base.dart index 3783e382..e69de29b 100644 --- a/packages/langchain/lib/src/chains/base.dart +++ b/packages/langchain/lib/src/chains/base.dart @@ -1,188 +0,0 @@ -import 'package:meta/meta.dart'; - -import '../core/core.dart'; -import '../memory/base.dart'; -import '../utils/utils.dart'; -import 'models/models.dart'; - -/// {@template base_chain} -/// Base class for creating structured sequences of calls to components. -/// -/// Chains should be used to encode a sequence of calls to components like -/// models, document retrievers, other chains, etc., and provide a simple -/// interface to this sequence. -/// -/// The [BaseChain] interface makes it easy to create apps that are: -/// - Stateful: add Memory to any Chain to give it state. -/// - Observable: pass Callbacks to a Chain to execute additional functionality, -/// like logging, outside the main sequence of component calls. -/// - Composable: the Chain API is flexible enough that it is easy to combine -/// Chains with other components, including other Chains. -/// -/// The main methods exposed by chains are: -/// -/// - [call] Chains are callable. The [call] method is the primary way to -/// execute a Chain. This takes inputs as a dictionary and returns a -/// dictionary output. -/// - [run] A convenience method that takes inputs and returns the output as a -/// string. This method can only be used if the Chain has a single string -/// output. -/// {@endtemplate} -abstract class BaseChain - extends BaseLangChain { - /// {@macro base_chain} - const BaseChain({ - this.memory, - }); - - /// Memory to use for this chain. - final MemoryType? memory; - - /// Return the string type key uniquely identifying this class of chain. - String get chainType; - - /// Input keys for this chain. - Set get inputKeys; - - /// Output keys for this chain. - Set get outputKeys; - - /// Output key from where the [run] method needs to take the return value. - String get runOutputKey { - if (outputKeys.length != 1) { - throw LangChainException( - message: '`chain.run` method can only be used with chains that return ' - 'a single string output. $chainType chain returns ' - '${outputKeys.length} output: $outputKeys. ' - 'Use `chain.call` method instead.', - ); - } - return outputKeys.first; - } - - /// Default input key for the input of the chain. - static const String defaultInputKey = 'input'; - - /// Default output key for the output of the chain. - static const defaultOutputKey = 'output'; - - /// Runs the core logic of this chain with the given input. - /// - /// - [input] is the input to this chain. - /// - [options] not used. - @override - Future invoke( - final ChainValues input, { - final ChainOptions? options, - }) { - return call(input); - } - - /// Runs the core logic of this chain with the given values. - /// If [memory] is not null, it will be used to load and save values. - /// - /// - [inputs] are the inputs to this chain. Assumed to contain all inputs - /// specified in [inputKeys], including any inputs added by [memory]. - /// - [returnOnlyOutputs] if true the chain will only return the outputs of - /// this chain. If false, the chain will return all inputs and outputs. - /// - /// Returns a dictionary of outputs. It should contain all outputs specified - /// in [outputKeys]. - Future call( - final dynamic input, { - final bool returnOnlyOutputs = false, - }) async { - ChainValues chainValues; - - if (input is Map) { - chainValues = input.cast(); - } else { - chainValues = {inputKeys.firstOrNull ?? defaultInputKey: input}; - } - - if (inputKeys.isNotEmpty) { - if (chainValues.length < inputKeys.length) { - throw ArgumentError( - 'This chain ($chainType) requires ${inputKeys.length} input values ' - 'but only ${chainValues.length} were provided.', - ); - } - final chainValuesKeys = chainValues.keys.toSet(); - final inputKeysDiff = inputKeys.difference(chainValuesKeys); - if (inputKeysDiff.isNotEmpty) { - throw ArgumentError( - 'This chain ($chainType) also requires $inputKeysDiff input values.', - ); - } - } - - final memory = this.memory; - if (memory != null) { - final newValues = await memory.loadMemoryVariables(chainValues); - chainValues.addAll(newValues); - } - - final outputValues = await callInternal(chainValues); - - if (memory != null) { - await memory.saveContext( - inputValues: chainValues, - outputValues: outputValues, - ); - } - - if (outputKeys.isNotEmpty) { - if (outputValues.length < outputKeys.length) { - throw ArgumentError( - 'This chain ($chainType) expects ${outputKeys.length} output values ' - 'but only ${outputValues.length} were returned.', - ); - } - final outputValuesKeys = outputValues.keys.toSet(); - final outputKeysDiff = outputKeys.difference(outputValuesKeys); - if (outputKeysDiff.isNotEmpty) { - throw ArgumentError( - 'This chain ($chainType) also expects $outputKeysDiff output values.', - ); - } - } - - if (returnOnlyOutputs) { - return outputValues; - } - - return {...chainValues, ...outputValues}; - } - - /// Call method to be implemented by subclasses (called by [call]). - /// This is where the core logic of the chain should be implemented. - @protected - Future callInternal(final ChainValues inputs); - - /// Call the chain on all inputs in the list. - Future> apply(final List inputs) async { - return Future.wait(inputs.map(call)); - } - - /// Convenience method for executing chain when there's a single string - /// output. - /// - /// The main difference between this method and [call] is that this method - /// can only be used for chains that return a single string output. If a - /// Chain has more outputs, the output is not a string, or you want to return - /// the inputs/run info along with the outputs, use [call]. - /// - /// If [run] is called on a chain that does not return a string, - /// [Object.toString] will be called on the output. - /// - /// The input can be: - /// - A single value, if the chain has a single input key. - /// Eg: `chain.run('Hello world!')` - /// - A map of key->values, if the chain has multiple input keys. - /// Eg: `chain.run({'foo': 'Hello', 'bar': 'world!'})` - Future run(final dynamic input) async { - final outputKey = runOutputKey; - final returnValues = await call(input, returnOnlyOutputs: true); - return returnValues[outputKey].toString(); - } -} diff --git a/packages/langchain/lib/src/chains/chains.dart b/packages/langchain/lib/src/chains/chains.dart index 367cc22d..d66466a0 100644 --- a/packages/langchain/lib/src/chains/chains.dart +++ b/packages/langchain/lib/src/chains/chains.dart @@ -1,8 +1,8 @@ +export 'package:langchain_core/chains.dart'; + export 'base.dart'; export 'combine_documents/combine_documents.dart'; export 'conversation.dart'; -export 'llm_chain.dart'; -export 'models/models.dart'; export 'question_answering/question_answering.dart'; export 'retrieval_qa.dart'; export 'sequential.dart'; diff --git a/packages/langchain/lib/src/chains/combine_documents/base.dart b/packages/langchain/lib/src/chains/combine_documents/base.dart index d16108e7..6aba9155 100644 --- a/packages/langchain/lib/src/chains/combine_documents/base.dart +++ b/packages/langchain/lib/src/chains/combine_documents/base.dart @@ -1,11 +1,8 @@ +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:meta/meta.dart'; -import '../../documents/models/models.dart'; -import '../../model_io/prompts/base_prompt.dart'; -import '../../model_io/prompts/models/models.dart'; -import '../base.dart'; -import '../models/models.dart'; - /// {@template base_combine_documents_chain} /// Base interface for chains combining documents, /// such as [StuffDocumentsChain]. diff --git a/packages/langchain/lib/src/chains/combine_documents/map_reduce.dart b/packages/langchain/lib/src/chains/combine_documents/map_reduce.dart index 9f09888d..ccf1bbad 100644 --- a/packages/langchain/lib/src/chains/combine_documents/map_reduce.dart +++ b/packages/langchain/lib/src/chains/combine_documents/map_reduce.dart @@ -1,8 +1,8 @@ -import '../../documents/models/models.dart'; -import '../../model_io/chat_models/models/models.dart'; -import '../../model_io/prompts/models/models.dart'; -import '../llm_chain.dart'; -import '../models/models.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/prompts.dart'; + import 'base.dart'; import 'reduce.dart'; import 'stuff.dart'; diff --git a/packages/langchain/lib/src/chains/combine_documents/reduce.dart b/packages/langchain/lib/src/chains/combine_documents/reduce.dart index 3e3f703a..35d9d16f 100644 --- a/packages/langchain/lib/src/chains/combine_documents/reduce.dart +++ b/packages/langchain/lib/src/chains/combine_documents/reduce.dart @@ -1,6 +1,7 @@ -import '../../documents/models/models.dart'; -import '../../model_io/prompts/models/models.dart'; -import '../models/models.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/prompts.dart'; + import 'base.dart'; import 'stuff.dart'; diff --git a/packages/langchain/lib/src/chains/combine_documents/stuff.dart b/packages/langchain/lib/src/chains/combine_documents/stuff.dart index 8013aada..3ae579bf 100644 --- a/packages/langchain/lib/src/chains/combine_documents/stuff.dart +++ b/packages/langchain/lib/src/chains/combine_documents/stuff.dart @@ -1,8 +1,8 @@ -import '../../documents/models/models.dart'; -import '../../model_io/chat_models/models/models.dart'; -import '../../model_io/prompts/prompts.dart'; -import '../llm_chain.dart'; -import '../models/models.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/prompts.dart'; + import 'base.dart'; /// {@template stuff_documents_chain} diff --git a/packages/langchain/lib/src/chains/conversation.dart b/packages/langchain/lib/src/chains/conversation.dart index 3fe9994c..c6eab56f 100644 --- a/packages/langchain/lib/src/chains/conversation.dart +++ b/packages/langchain/lib/src/chains/conversation.dart @@ -1,8 +1,9 @@ // ignore_for_file: avoid_redundant_argument_values -import '../memory/base.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/memory.dart'; +import 'package:langchain_core/prompts.dart'; + import '../memory/buffer.dart'; -import '../model_io/prompts/prompts.dart'; -import 'llm_chain.dart'; const _defaultTemplate = ''' The following is a friendly conversation between a human and an AI. The AI is diff --git a/packages/langchain/lib/src/chains/question_answering/stuff.dart b/packages/langchain/lib/src/chains/question_answering/stuff.dart index 4dbf33d2..5e97a44d 100644 --- a/packages/langchain/lib/src/chains/question_answering/stuff.dart +++ b/packages/langchain/lib/src/chains/question_answering/stuff.dart @@ -1,7 +1,8 @@ -import '../../model_io/language_models/base.dart'; -import '../../model_io/prompts/prompts.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/prompts.dart'; + import '../combine_documents/stuff.dart'; -import '../llm_chain.dart'; const _promptTemplate = ''' Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. diff --git a/packages/langchain/lib/src/chains/retrieval_qa.dart b/packages/langchain/lib/src/chains/retrieval_qa.dart index cca15a02..501d3652 100644 --- a/packages/langchain/lib/src/chains/retrieval_qa.dart +++ b/packages/langchain/lib/src/chains/retrieval_qa.dart @@ -1,10 +1,10 @@ -import '../documents/models/models.dart'; -import '../documents/retrievers/base.dart'; -import '../model_io/language_models/base.dart'; -import '../model_io/prompts/prompts.dart'; -import 'base.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/retrievers.dart'; + import 'combine_documents/combine_documents.dart'; -import 'models/models.dart'; import 'question_answering/question_answering.dart'; /// {@template retrieval_qa_chain} diff --git a/packages/langchain/lib/src/chains/sequential.dart b/packages/langchain/lib/src/chains/sequential.dart index 788d67c9..579d8675 100644 --- a/packages/langchain/lib/src/chains/sequential.dart +++ b/packages/langchain/lib/src/chains/sequential.dart @@ -1,6 +1,5 @@ -import '../memory/memory.dart'; -import 'base.dart'; -import 'models/models.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/memory.dart'; /// {@template sequential_chain} /// Chain that combines multiple chains where the output of the one diff --git a/packages/langchain/lib/src/chains/summarization/summarize.dart b/packages/langchain/lib/src/chains/summarization/summarize.dart index 460acd70..f41df3f6 100644 --- a/packages/langchain/lib/src/chains/summarization/summarize.dart +++ b/packages/langchain/lib/src/chains/summarization/summarize.dart @@ -1,7 +1,8 @@ -import '../../model_io/language_models/language_models.dart'; -import '../../model_io/prompts/prompts.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/prompts.dart'; + import '../combine_documents/combine_documents.dart'; -import '../llm_chain.dart'; const _template = ''' Write a concise summary of the following: diff --git a/packages/langchain/lib/src/chat_history/chat_history.dart b/packages/langchain/lib/src/chat_history/chat_history.dart new file mode 100644 index 00000000..6c9b556a --- /dev/null +++ b/packages/langchain/lib/src/chat_history/chat_history.dart @@ -0,0 +1,3 @@ +export 'package:langchain_core/chat_history.dart'; + +export 'in_memory.dart'; diff --git a/packages/langchain/lib/src/memory/chat_message_history/in_memory.dart b/packages/langchain/lib/src/chat_history/in_memory.dart similarity index 90% rename from packages/langchain/lib/src/memory/chat_message_history/in_memory.dart rename to packages/langchain/lib/src/chat_history/in_memory.dart index 13e71a95..5cc02d55 100644 --- a/packages/langchain/lib/src/memory/chat_message_history/in_memory.dart +++ b/packages/langchain/lib/src/chat_history/in_memory.dart @@ -1,7 +1,7 @@ import 'dart:collection'; -import '../../model_io/chat_models/chat_models.dart'; -import 'base.dart'; +import 'package:langchain_core/chat_history.dart'; +import 'package:langchain_core/chat_models.dart'; /// {@template chat_message_history} /// A simple in-memory implementation of a chat message history. diff --git a/packages/langchain/lib/src/chat_models/chat_models.dart b/packages/langchain/lib/src/chat_models/chat_models.dart new file mode 100644 index 00000000..9249469e --- /dev/null +++ b/packages/langchain/lib/src/chat_models/chat_models.dart @@ -0,0 +1 @@ +export 'package:langchain_core/chat_models.dart'; diff --git a/packages/langchain/lib/src/core/base.dart b/packages/langchain/lib/src/core/base.dart deleted file mode 100644 index b4840f07..00000000 --- a/packages/langchain/lib/src/core/base.dart +++ /dev/null @@ -1,22 +0,0 @@ -import 'package:meta/meta.dart'; - -import 'runnable/base.dart'; - -/// {@template base_lang_chain} -/// Base class for LangChain components (language models, chains, tools, etc.). -/// {@endtemplate} -abstract class BaseLangChain - extends Runnable { - /// {@macro base_lang_chain} - const BaseLangChain(); -} - -/// {@template base_lang_chain_options} -/// Base class for LangChain options. -/// {@endtemplate} -@immutable -class BaseLangChainOptions { - /// {@macro base_lang_chain_options} - const BaseLangChainOptions(); -} diff --git a/packages/langchain/lib/src/core/core.dart b/packages/langchain/lib/src/core/core.dart deleted file mode 100644 index 84e652cf..00000000 --- a/packages/langchain/lib/src/core/core.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'base.dart'; -export 'runnable/runnable.dart'; diff --git a/packages/langchain/lib/src/document_loaders/document_loaders.dart b/packages/langchain/lib/src/document_loaders/document_loaders.dart new file mode 100644 index 00000000..0e0e0c18 --- /dev/null +++ b/packages/langchain/lib/src/document_loaders/document_loaders.dart @@ -0,0 +1 @@ +export 'package:langchain_core/document_loaders.dart'; diff --git a/packages/langchain/lib/src/documents/documents.dart b/packages/langchain/lib/src/documents/documents.dart index d4d73d06..ae130fd1 100644 --- a/packages/langchain/lib/src/documents/documents.dart +++ b/packages/langchain/lib/src/documents/documents.dart @@ -1,7 +1 @@ -export 'embeddings/embeddings.dart'; -export 'loaders/loaders.dart'; -export 'models/models.dart'; -export 'retrievers/retrievers.dart'; -export 'stores/stores.dart'; -export 'transformers/transformers.dart'; -export 'vector_stores/vector_stores.dart'; +export 'package:langchain_core/documents.dart'; diff --git a/packages/langchain/lib/src/documents/stores/base.dart b/packages/langchain/lib/src/documents/stores/base.dart deleted file mode 100644 index 9e4038bf..00000000 --- a/packages/langchain/lib/src/documents/stores/base.dart +++ /dev/null @@ -1,18 +0,0 @@ -import '../models/models.dart'; - -/// {@template doc_store} -/// Interface to access to place that stores documents. -/// {@endtemplate} -abstract interface class DocStore { - /// {@macro doc_store} - const DocStore(); - - /// Search for document. - Future search(final String query); - - /// Adds documents. - Future add(final Map documents); - - /// Deletes documents by id. - Future delete(final List ids); -} diff --git a/packages/langchain/lib/src/documents/stores/in_memory.dart b/packages/langchain/lib/src/documents/stores/in_memory.dart deleted file mode 100644 index 29e2df18..00000000 --- a/packages/langchain/lib/src/documents/stores/in_memory.dart +++ /dev/null @@ -1,34 +0,0 @@ -import '../../utils/exception.dart'; -import '../models/models.dart'; -import 'base.dart'; - -/// {@template in_memory_doc_store} -/// Simple in memory [DocStore] in the form of a map. -/// {@endtemplate} -class InMemoryDocStore implements DocStore { - /// {@macro in_memory_doc_store} - InMemoryDocStore({ - final Map? initialDocuments, - }) : _documents = {...?initialDocuments}; - - final Map _documents; - - @override - Future search(final String query) async { - final doc = _documents[query]; - if (doc == null) { - throw LangChainException(message: 'Document with id=$query not found'); - } - return doc; - } - - @override - Future add(final Map documents) async { - _documents.addAll(documents); - } - - @override - Future delete(final List ids) async { - ids.forEach(_documents.remove); - } -} diff --git a/packages/langchain/lib/src/documents/stores/stores.dart b/packages/langchain/lib/src/documents/stores/stores.dart deleted file mode 100644 index ae9c00e2..00000000 --- a/packages/langchain/lib/src/documents/stores/stores.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'base.dart'; -export 'in_memory.dart'; diff --git a/packages/langchain/lib/src/documents/transformers/transformers.dart b/packages/langchain/lib/src/documents/transformers/transformers.dart deleted file mode 100644 index af864a16..00000000 --- a/packages/langchain/lib/src/documents/transformers/transformers.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'base.dart'; -export 'text_splitters/text_splitters.dart'; diff --git a/packages/langchain/lib/src/documents/vector_stores/vector_stores.dart b/packages/langchain/lib/src/documents/vector_stores/vector_stores.dart deleted file mode 100644 index 47a83334..00000000 --- a/packages/langchain/lib/src/documents/vector_stores/vector_stores.dart +++ /dev/null @@ -1,3 +0,0 @@ -export 'base.dart'; -export 'memory.dart'; -export 'models/models.dart'; diff --git a/packages/langchain/lib/src/documents/embeddings/cache.dart b/packages/langchain/lib/src/embeddings/cache.dart similarity index 96% rename from packages/langchain/lib/src/documents/embeddings/cache.dart rename to packages/langchain/lib/src/embeddings/cache.dart index 594312f4..270ae124 100644 --- a/packages/langchain/lib/src/documents/embeddings/cache.dart +++ b/packages/langchain/lib/src/embeddings/cache.dart @@ -2,11 +2,12 @@ import 'dart:convert'; import 'dart:typed_data'; import 'package:crypto/crypto.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; +import 'package:langchain_core/stores.dart'; import 'package:uuid/uuid.dart'; -import '../../storage/storage.dart'; -import '../models/models.dart'; -import 'base.dart'; +import '../stores/encoder_backed.dart'; /// {@template cache_backed_embeddings} /// Wrapper around an embedder that caches embeddings in a key-value store to diff --git a/packages/langchain/lib/src/embeddings/embeddings.dart b/packages/langchain/lib/src/embeddings/embeddings.dart new file mode 100644 index 00000000..2ab3e391 --- /dev/null +++ b/packages/langchain/lib/src/embeddings/embeddings.dart @@ -0,0 +1,3 @@ +export 'package:langchain_core/embeddings.dart'; + +export 'cache.dart'; diff --git a/packages/langchain/lib/src/exceptions/exceptions.dart b/packages/langchain/lib/src/exceptions/exceptions.dart new file mode 100644 index 00000000..ae21675f --- /dev/null +++ b/packages/langchain/lib/src/exceptions/exceptions.dart @@ -0,0 +1 @@ +export 'package:langchain_core/exceptions.dart'; diff --git a/packages/langchain/lib/src/langchain/langchain.dart b/packages/langchain/lib/src/langchain/langchain.dart new file mode 100644 index 00000000..d20099e3 --- /dev/null +++ b/packages/langchain/lib/src/langchain/langchain.dart @@ -0,0 +1 @@ +export 'package:langchain_core/langchain.dart'; diff --git a/packages/langchain/lib/src/language_models/language_models.dart b/packages/langchain/lib/src/language_models/language_models.dart new file mode 100644 index 00000000..c67f54ef --- /dev/null +++ b/packages/langchain/lib/src/language_models/language_models.dart @@ -0,0 +1 @@ +export 'package:langchain_core/language_models.dart'; diff --git a/packages/langchain/lib/src/llms/llms.dart b/packages/langchain/lib/src/llms/llms.dart new file mode 100644 index 00000000..20840af4 --- /dev/null +++ b/packages/langchain/lib/src/llms/llms.dart @@ -0,0 +1 @@ +export 'package:langchain_core/llms.dart'; diff --git a/packages/langchain/lib/src/memory/buffer.dart b/packages/langchain/lib/src/memory/buffer.dart index 185ba2a3..fb918f5d 100644 --- a/packages/langchain/lib/src/memory/buffer.dart +++ b/packages/langchain/lib/src/memory/buffer.dart @@ -1,8 +1,8 @@ -import '../model_io/chat_models/models/models.dart'; -import '../model_io/chat_models/utils.dart'; -import 'base.dart'; -import 'chat.dart'; -import 'models/models.dart'; +import 'package:langchain_core/chat_history.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/memory.dart'; + +import '../chat_history/in_memory.dart'; /// {@template conversation_buffer_memory} /// Buffer for storing a conversation in-memory and then retrieving the @@ -21,7 +21,7 @@ import 'models/models.dart'; final class ConversationBufferMemory extends BaseChatMemory { /// {@macro conversation_buffer_memory} ConversationBufferMemory({ - super.chatHistory, + final BaseChatMessageHistory? chatHistory, super.inputKey, super.outputKey, super.returnMessages = false, @@ -30,7 +30,7 @@ final class ConversationBufferMemory extends BaseChatMemory { this.humanPrefix = HumanChatMessage.defaultPrefix, this.aiPrefix = AIChatMessage.defaultPrefix, this.functionPrefix = FunctionChatMessage.defaultPrefix, - }); + }) : super(chatHistory: chatHistory ?? ChatMessageHistory()); /// The memory key to use for the chat history. /// This will be passed as input variable to the prompt. diff --git a/packages/langchain/lib/src/memory/buffer_window.dart b/packages/langchain/lib/src/memory/buffer_window.dart index 658f72a6..13c09c80 100644 --- a/packages/langchain/lib/src/memory/buffer_window.dart +++ b/packages/langchain/lib/src/memory/buffer_window.dart @@ -1,8 +1,8 @@ -import '../model_io/chat_models/models/models.dart'; -import '../model_io/chat_models/utils.dart'; -import 'base.dart'; -import 'chat.dart'; -import 'models/models.dart'; +import 'package:langchain_core/chat_history.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/memory.dart'; + +import '../chat_history/in_memory.dart'; /// {@template conversation_buffer_window_memory} /// [ConversationBufferWindowMemory] is a type of memory that stores a @@ -23,7 +23,7 @@ import 'models/models.dart'; final class ConversationBufferWindowMemory extends BaseChatMemory { /// {@macro conversation_buffer_window_memory} ConversationBufferWindowMemory({ - super.chatHistory, + final BaseChatMessageHistory? chatHistory, super.inputKey, super.outputKey, super.returnMessages = false, @@ -33,7 +33,7 @@ final class ConversationBufferWindowMemory extends BaseChatMemory { this.humanPrefix = HumanChatMessage.defaultPrefix, this.aiPrefix = AIChatMessage.defaultPrefix, this.functionPrefix = FunctionChatMessage.defaultPrefix, - }); + }) : super(chatHistory: chatHistory ?? ChatMessageHistory()); /// Number of interactions to store in the buffer. final int k; diff --git a/packages/langchain/lib/src/memory/chat_message_history/chat_message_history.dart b/packages/langchain/lib/src/memory/chat_message_history/chat_message_history.dart deleted file mode 100644 index ae9c00e2..00000000 --- a/packages/langchain/lib/src/memory/chat_message_history/chat_message_history.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'base.dart'; -export 'in_memory.dart'; diff --git a/packages/langchain/lib/src/memory/memory.dart b/packages/langchain/lib/src/memory/memory.dart index 3f21a052..b120fbd0 100644 --- a/packages/langchain/lib/src/memory/memory.dart +++ b/packages/langchain/lib/src/memory/memory.dart @@ -1,9 +1,7 @@ -export 'base.dart'; +export 'package:langchain_core/memory.dart'; + export 'buffer.dart'; export 'buffer_window.dart'; -export 'chat.dart'; -export 'chat_message_history/chat_message_history.dart'; -export 'models/models.dart'; export 'simple.dart'; export 'summary.dart'; export 'token_buffer.dart'; diff --git a/packages/langchain/lib/src/memory/simple.dart b/packages/langchain/lib/src/memory/simple.dart index a6974896..82395746 100644 --- a/packages/langchain/lib/src/memory/simple.dart +++ b/packages/langchain/lib/src/memory/simple.dart @@ -1,5 +1,4 @@ -import 'base.dart'; -import 'models/models.dart'; +import 'package:langchain_core/memory.dart'; /// {@template simple_memory} /// Simple memory for storing context or other bits of information that diff --git a/packages/langchain/lib/src/memory/summary.dart b/packages/langchain/lib/src/memory/summary.dart index f3d95153..a6c27bed 100644 --- a/packages/langchain/lib/src/memory/summary.dart +++ b/packages/langchain/lib/src/memory/summary.dart @@ -1,12 +1,11 @@ +import 'package:langchain_core/chat_history.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/memory.dart'; +import 'package:langchain_core/prompts.dart'; + import '../chains/chains.dart'; -import '../model_io/chat_models/models/models.dart'; -import '../model_io/chat_models/utils.dart'; -import '../model_io/language_models/language_models.dart'; -import '../model_io/prompts/prompts.dart'; -import 'base.dart'; -import 'chat.dart'; -import 'chat_message_history/chat_message_history.dart'; -import 'models/models.dart'; +import '../chat_history/in_memory.dart'; const _template = ''' Progressively summarize the lines of conversation provided, adding onto the previous summary returning a new summary. @@ -65,7 +64,7 @@ final class ConversationSummaryMemory extends BaseChatMemory { /// {@macro conversation_summary_memory} ConversationSummaryMemory({ - super.chatHistory, + final BaseChatMessageHistory? chatHistory, super.inputKey, super.outputKey, super.returnMessages = false, @@ -78,7 +77,8 @@ final class ConversationSummaryMemory this.humanPrefix = HumanChatMessage.defaultPrefix, this.aiPrefix = AIChatMessage.defaultPrefix, this.functionPrefix = FunctionChatMessage.defaultPrefix, - }) : _buffer = initialSummary; + }) : _buffer = initialSummary, + super(chatHistory: chatHistory ?? ChatMessageHistory()); /// Language model to use for summarizing the conversation. final LLMType llm; diff --git a/packages/langchain/lib/src/memory/token_buffer.dart b/packages/langchain/lib/src/memory/token_buffer.dart index d7c93229..1baed226 100644 --- a/packages/langchain/lib/src/memory/token_buffer.dart +++ b/packages/langchain/lib/src/memory/token_buffer.dart @@ -1,11 +1,10 @@ -import '../model_io/chat_models/models/models.dart'; -import '../model_io/chat_models/utils.dart'; -import '../model_io/language_models/language_models.dart'; -import '../model_io/prompts/prompts.dart'; -import 'base.dart'; -import 'buffer_window.dart'; -import 'chat.dart'; -import 'models/models.dart'; +import 'package:langchain_core/chat_history.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/memory.dart'; +import 'package:langchain_core/prompts.dart'; + +import '../chat_history/in_memory.dart'; /// {@template conversation_token_buffer_memory} /// Rolling buffer for storing a conversation and then retrieving the messages @@ -30,7 +29,7 @@ final class ConversationTokenBufferMemory extends BaseChatMemory { /// {@macro conversation_token_buffer_memory} ConversationTokenBufferMemory({ - super.chatHistory, + final BaseChatMessageHistory? chatHistory, super.inputKey, super.outputKey, super.returnMessages = false, @@ -41,7 +40,7 @@ final class ConversationTokenBufferMemory this.humanPrefix = HumanChatMessage.defaultPrefix, this.aiPrefix = AIChatMessage.defaultPrefix, this.functionPrefix = FunctionChatMessage.defaultPrefix, - }); + }) : super(chatHistory: chatHistory ?? ChatMessageHistory()); /// Max number of tokens to use. final int maxTokenLimit; diff --git a/packages/langchain/lib/src/memory/vector_store.dart b/packages/langchain/lib/src/memory/vector_store.dart index 66e6c6a6..5d196664 100644 --- a/packages/langchain/lib/src/memory/vector_store.dart +++ b/packages/langchain/lib/src/memory/vector_store.dart @@ -1,5 +1,6 @@ -import '../../langchain.dart'; -import 'utils.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/memory.dart'; +import 'package:langchain_core/vector_stores.dart'; /// {@template vector_store_retriever_memory} /// Memory backed by a vector store. @@ -56,7 +57,7 @@ class VectorStoreMemory implements BaseMemory { return { memoryKey: returnDocs ? docs - : docs.map((final doc) => doc.pageContent).join('\n'), + : docs.map((final Document doc) => doc.pageContent).join('\n'), }; } diff --git a/packages/langchain/lib/src/model_io/language_models/language_models.dart b/packages/langchain/lib/src/model_io/language_models/language_models.dart deleted file mode 100644 index 69af5d1a..00000000 --- a/packages/langchain/lib/src/model_io/language_models/language_models.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'base.dart'; -export 'models/models.dart'; diff --git a/packages/langchain/lib/src/model_io/model_io.dart b/packages/langchain/lib/src/model_io/model_io.dart deleted file mode 100644 index a51d0f70..00000000 --- a/packages/langchain/lib/src/model_io/model_io.dart +++ /dev/null @@ -1,5 +0,0 @@ -export 'chat_models/chat_models.dart'; -export 'language_models/language_models.dart'; -export 'llms/llms.dart'; -export 'output_parsers/output_parsers.dart'; -export 'prompts/prompts.dart'; diff --git a/packages/langchain/lib/src/model_io/output_parsers/output_parsers.dart b/packages/langchain/lib/src/model_io/output_parsers/output_parsers.dart deleted file mode 100644 index 1993c04b..00000000 --- a/packages/langchain/lib/src/model_io/output_parsers/output_parsers.dart +++ /dev/null @@ -1,4 +0,0 @@ -export 'functions.dart'; -export 'models/models.dart'; -export 'output_parser.dart'; -export 'string.dart'; diff --git a/packages/langchain/lib/src/output_parsers/output_parsers.dart b/packages/langchain/lib/src/output_parsers/output_parsers.dart new file mode 100644 index 00000000..779a7a11 --- /dev/null +++ b/packages/langchain/lib/src/output_parsers/output_parsers.dart @@ -0,0 +1 @@ +export 'package:langchain_core/output_parsers.dart'; diff --git a/packages/langchain/lib/src/prompts/prompts.dart b/packages/langchain/lib/src/prompts/prompts.dart new file mode 100644 index 00000000..be441e43 --- /dev/null +++ b/packages/langchain/lib/src/prompts/prompts.dart @@ -0,0 +1 @@ +export 'package:langchain_core/prompts.dart'; diff --git a/packages/langchain/lib/src/retrievers/retrievers.dart b/packages/langchain/lib/src/retrievers/retrievers.dart new file mode 100644 index 00000000..eb0a6a90 --- /dev/null +++ b/packages/langchain/lib/src/retrievers/retrievers.dart @@ -0,0 +1 @@ +export 'package:langchain_core/retrievers.dart'; diff --git a/packages/langchain/lib/src/runnables/runnables.dart b/packages/langchain/lib/src/runnables/runnables.dart new file mode 100644 index 00000000..2c2b1a40 --- /dev/null +++ b/packages/langchain/lib/src/runnables/runnables.dart @@ -0,0 +1 @@ +export 'package:langchain_core/runnables.dart'; diff --git a/packages/langchain/lib/src/storage/encoder_backed.dart b/packages/langchain/lib/src/stores/encoder_backed.dart similarity index 97% rename from packages/langchain/lib/src/storage/encoder_backed.dart rename to packages/langchain/lib/src/stores/encoder_backed.dart index df29d6aa..650d654a 100644 --- a/packages/langchain/lib/src/storage/encoder_backed.dart +++ b/packages/langchain/lib/src/stores/encoder_backed.dart @@ -1,4 +1,4 @@ -import 'base.dart'; +import 'package:langchain_core/stores.dart'; /// {@template encoder_backed_store} /// Wraps a store with key and value encoders/decoders. diff --git a/packages/langchain/lib/src/storage/file_system_io.dart b/packages/langchain/lib/src/stores/file_system_io.dart similarity index 97% rename from packages/langchain/lib/src/storage/file_system_io.dart rename to packages/langchain/lib/src/stores/file_system_io.dart index 000e58a5..534293d0 100644 --- a/packages/langchain/lib/src/storage/file_system_io.dart +++ b/packages/langchain/lib/src/stores/file_system_io.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'dart:io'; import 'dart:typed_data'; -import 'base.dart'; +import 'package:langchain_core/stores.dart'; /// {@template local_file_store_io} /// A simple file system implementation of a [BaseStore]. diff --git a/packages/langchain/lib/src/storage/file_system_stub.dart b/packages/langchain/lib/src/stores/file_system_stub.dart similarity index 96% rename from packages/langchain/lib/src/storage/file_system_stub.dart rename to packages/langchain/lib/src/stores/file_system_stub.dart index cd802f7f..605eafad 100644 --- a/packages/langchain/lib/src/storage/file_system_stub.dart +++ b/packages/langchain/lib/src/stores/file_system_stub.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'base.dart'; +import 'package:langchain_core/stores.dart'; /// {@template local_file_store_stub} /// A simple file system implementation of a [BaseStore]. diff --git a/packages/langchain/lib/src/storage/in_memory.dart b/packages/langchain/lib/src/stores/in_memory.dart similarity index 95% rename from packages/langchain/lib/src/storage/in_memory.dart rename to packages/langchain/lib/src/stores/in_memory.dart index 1420173b..db8853d5 100644 --- a/packages/langchain/lib/src/storage/in_memory.dart +++ b/packages/langchain/lib/src/stores/in_memory.dart @@ -1,4 +1,4 @@ -import 'base.dart'; +import 'package:langchain_core/stores.dart'; /// {@template in_memory_store} /// In-memory implementation of the BaseStore using a dictionary. diff --git a/packages/langchain/lib/src/storage/storage.dart b/packages/langchain/lib/src/stores/stores.dart similarity index 73% rename from packages/langchain/lib/src/storage/storage.dart rename to packages/langchain/lib/src/stores/stores.dart index 24f36c5d..66cb892b 100644 --- a/packages/langchain/lib/src/storage/storage.dart +++ b/packages/langchain/lib/src/stores/stores.dart @@ -1,4 +1,5 @@ -export 'base.dart'; +export 'package:langchain_core/stores.dart'; + export 'encoder_backed.dart'; export 'file_system_stub.dart' if (dart.library.io) 'file_system_io.dart'; export 'in_memory.dart'; diff --git a/packages/langchain/lib/src/documents/transformers/text_splitters/character.dart b/packages/langchain/lib/src/text_splitters/character.dart similarity index 100% rename from packages/langchain/lib/src/documents/transformers/text_splitters/character.dart rename to packages/langchain/lib/src/text_splitters/character.dart diff --git a/packages/langchain/lib/src/documents/transformers/text_splitters/code.dart b/packages/langchain/lib/src/text_splitters/code.dart similarity index 100% rename from packages/langchain/lib/src/documents/transformers/text_splitters/code.dart rename to packages/langchain/lib/src/text_splitters/code.dart diff --git a/packages/langchain/lib/src/documents/transformers/text_splitters/recursive_character.dart b/packages/langchain/lib/src/text_splitters/recursive_character.dart similarity index 100% rename from packages/langchain/lib/src/documents/transformers/text_splitters/recursive_character.dart rename to packages/langchain/lib/src/text_splitters/recursive_character.dart diff --git a/packages/langchain/lib/src/documents/transformers/text_splitters/text_splitter.dart b/packages/langchain/lib/src/text_splitters/text_splitter.dart similarity index 98% rename from packages/langchain/lib/src/documents/transformers/text_splitters/text_splitter.dart rename to packages/langchain/lib/src/text_splitters/text_splitter.dart index f33671d1..02b67ffc 100644 --- a/packages/langchain/lib/src/documents/transformers/text_splitters/text_splitter.dart +++ b/packages/langchain/lib/src/text_splitters/text_splitter.dart @@ -1,9 +1,7 @@ import 'package:characters/characters.dart'; +import 'package:langchain_core/documents.dart'; import 'package:meta/meta.dart'; -import '../../models/models.dart'; -import '../base.dart'; - /// {@template text_splitter} /// Interface for splitting text into chunks. /// {@endtemplate} diff --git a/packages/langchain/lib/src/documents/transformers/text_splitters/text_splitters.dart b/packages/langchain/lib/src/text_splitters/text_splitters.dart similarity index 100% rename from packages/langchain/lib/src/documents/transformers/text_splitters/text_splitters.dart rename to packages/langchain/lib/src/text_splitters/text_splitters.dart diff --git a/packages/langchain/lib/src/documents/transformers/text_splitters/utils.dart b/packages/langchain/lib/src/text_splitters/utils.dart similarity index 100% rename from packages/langchain/lib/src/documents/transformers/text_splitters/utils.dart rename to packages/langchain/lib/src/text_splitters/utils.dart diff --git a/packages/langchain/lib/src/agents/tools/exception.dart b/packages/langchain/lib/src/tools/exception.dart similarity index 89% rename from packages/langchain/lib/src/agents/tools/exception.dart rename to packages/langchain/lib/src/tools/exception.dart index 0832ef4d..81677dab 100644 --- a/packages/langchain/lib/src/agents/tools/exception.dart +++ b/packages/langchain/lib/src/tools/exception.dart @@ -1,8 +1,6 @@ import 'dart:async'; -import '../executors.dart'; -import 'base.dart'; -import 'models/models.dart'; +import 'package:langchain_core/tools.dart'; /// {@template exception_tool} /// A tool used when the agent throws an [OutputParserException]. diff --git a/packages/langchain/lib/src/agents/tools/invalid.dart b/packages/langchain/lib/src/tools/invalid.dart similarity index 91% rename from packages/langchain/lib/src/agents/tools/invalid.dart rename to packages/langchain/lib/src/tools/invalid.dart index 73dac0cc..67a19cbb 100644 --- a/packages/langchain/lib/src/agents/tools/invalid.dart +++ b/packages/langchain/lib/src/tools/invalid.dart @@ -1,7 +1,6 @@ import 'dart:async'; -import 'base.dart'; -import 'models/models.dart'; +import 'package:langchain_core/tools.dart'; /// {@template invalid_tool} /// Tool that is run when invalid tool name is encountered by agent diff --git a/packages/langchain/lib/src/tools/tools.dart b/packages/langchain/lib/src/tools/tools.dart new file mode 100644 index 00000000..b22f57d5 --- /dev/null +++ b/packages/langchain/lib/src/tools/tools.dart @@ -0,0 +1,4 @@ +export 'package:langchain_core/tools.dart'; + +export 'exception.dart'; +export 'invalid.dart'; diff --git a/packages/langchain/lib/src/utils/utils.dart b/packages/langchain/lib/src/utils/utils.dart deleted file mode 100644 index 6053048e..00000000 --- a/packages/langchain/lib/src/utils/utils.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'chunk.dart'; -export 'exception.dart'; diff --git a/packages/langchain/lib/src/documents/vector_stores/memory.dart b/packages/langchain/lib/src/vector_stores/memory.dart similarity index 98% rename from packages/langchain/lib/src/documents/vector_stores/memory.dart rename to packages/langchain/lib/src/vector_stores/memory.dart index 70087ec5..557b3518 100644 --- a/packages/langchain/lib/src/documents/vector_stores/memory.dart +++ b/packages/langchain/lib/src/vector_stores/memory.dart @@ -1,14 +1,12 @@ import 'dart:math'; import 'package:collection/collection.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:meta/meta.dart'; import 'package:uuid/uuid.dart'; -import '../embeddings/base.dart'; -import '../models/models.dart'; -import 'base.dart'; -import 'models/models.dart'; - /// Vector store that stores vectors in memory. /// /// By default, it uses cosine similarity to compare vectors. diff --git a/packages/langchain/lib/src/vector_stores/vector_stores.dart b/packages/langchain/lib/src/vector_stores/vector_stores.dart new file mode 100644 index 00000000..89e24c97 --- /dev/null +++ b/packages/langchain/lib/src/vector_stores/vector_stores.dart @@ -0,0 +1,3 @@ +export 'package:langchain_core/vector_stores.dart'; + +export 'memory.dart'; diff --git a/packages/langchain/pubspec.yaml b/packages/langchain/pubspec.yaml index 52e964a4..edd4a535 100644 --- a/packages/langchain/pubspec.yaml +++ b/packages/langchain/pubspec.yaml @@ -16,16 +16,10 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: - async: ^2.11.0 - beautiful_soup_dart: ^0.3.0 characters: ^1.3.0 collection: '>=1.17.0 <1.19.0' crypto: ^3.0.3 - cross_file: ^0.3.3+4 - csv: ^5.1.0 - http: ^1.1.0 - json_path: ^0.7.0 - math_expressions: ^2.4.0 + langchain_core: ^0.0.1-dev.2 meta: ^1.9.1 uuid: ^4.0.0 diff --git a/packages/langchain/pubspec_overrides.yaml b/packages/langchain/pubspec_overrides.yaml new file mode 100644 index 00000000..3508ed77 --- /dev/null +++ b/packages/langchain/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: langchain_core +dependency_overrides: + langchain_core: + path: ../langchain_core diff --git a/packages/langchain/test/agents/executors_test.dart b/packages/langchain/test/agents/executor_test.dart similarity index 100% rename from packages/langchain/test/agents/executors_test.dart rename to packages/langchain/test/agents/executor_test.dart diff --git a/packages/langchain/test/chains/base_test.dart b/packages/langchain/test/chains/base_test.dart index 1fded186..9a93f69a 100644 --- a/packages/langchain/test/chains/base_test.dart +++ b/packages/langchain/test/chains/base_test.dart @@ -1,6 +1,5 @@ // ignore_for_file: unused_element -import 'package:langchain/src/chains/chains.dart'; -import 'package:langchain/src/memory/memory.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { @@ -92,6 +91,31 @@ void main() { ); }); }); + + group('Runnable tests', () { + + test('Chain as Runnable', () async { + final model = FakeListLLM(responses: ['Hello world!']); + final prompt = PromptTemplate.fromTemplate('Print {foo}'); + final run = LLMChain(prompt: prompt, llm: model); + final res = await run.invoke({'foo': 'Hello world!'}); + expect(res[LLMChain.defaultOutputKey], 'Hello world!'); + }); + + test('Streaming Chain', () async { + final model = FakeListLLM(responses: ['Hello world!']); + final prompt = PromptTemplate.fromTemplate('Print {foo}'); + final run = LLMChain(prompt: prompt, llm: model); + final stream = run.stream({'foo': 'Hello world!'}); + + final streamList = await stream.toList(); + expect(streamList.length, 1); + expect(streamList.first, isA>()); + + final res = streamList.first; + expect(res[LLMChain.defaultOutputKey], 'Hello world!'); + }); + }); } class _FakeChain extends BaseChain { diff --git a/packages/langchain/test/chains/combine_documents/map_reduce_test.dart b/packages/langchain/test/chains/combine_documents/map_reduce_test.dart index eddb0f15..9b55fdde 100644 --- a/packages/langchain/test/chains/combine_documents/map_reduce_test.dart +++ b/packages/langchain/test/chains/combine_documents/map_reduce_test.dart @@ -1,9 +1,4 @@ -import 'package:langchain/src/chains/chains.dart'; -import 'package:langchain/src/documents/documents.dart'; -import 'package:langchain/src/model_io/chat_models/fake.dart'; -import 'package:langchain/src/model_io/language_models/language_models.dart'; -import 'package:langchain/src/model_io/llms/fake.dart'; -import 'package:langchain/src/model_io/prompts/prompts.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/chains/combine_documents/reduce_test.dart b/packages/langchain/test/chains/combine_documents/reduce_test.dart index 893a7b78..8156f1d9 100644 --- a/packages/langchain/test/chains/combine_documents/reduce_test.dart +++ b/packages/langchain/test/chains/combine_documents/reduce_test.dart @@ -1,7 +1,4 @@ -import 'package:langchain/src/chains/chains.dart'; -import 'package:langchain/src/documents/documents.dart'; -import 'package:langchain/src/model_io/llms/fake.dart'; -import 'package:langchain/src/model_io/prompts/prompts.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/chains/combine_documents/stuff_test.dart b/packages/langchain/test/chains/combine_documents/stuff_test.dart index dd89c5c4..6311426b 100644 --- a/packages/langchain/test/chains/combine_documents/stuff_test.dart +++ b/packages/langchain/test/chains/combine_documents/stuff_test.dart @@ -1,9 +1,4 @@ -import 'package:langchain/src/chains/chains.dart'; -import 'package:langchain/src/documents/documents.dart'; -import 'package:langchain/src/model_io/chat_models/fake.dart'; -import 'package:langchain/src/model_io/language_models/language_models.dart'; -import 'package:langchain/src/model_io/llms/fake.dart'; -import 'package:langchain/src/model_io/prompts/prompts.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/chains/conversation_test.dart b/packages/langchain/test/chains/conversation_test.dart index dc04f14c..33b7e89f 100644 --- a/packages/langchain/test/chains/conversation_test.dart +++ b/packages/langchain/test/chains/conversation_test.dart @@ -1,6 +1,4 @@ -import 'package:langchain/src/chains/conversation.dart'; -import 'package:langchain/src/model_io/llms/fake.dart'; -import 'package:langchain/src/model_io/prompts/prompts.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/chains/retrieval_qa_test.dart b/packages/langchain/test/chains/retrieval_qa_test.dart index 40d3ca42..0d5aba0e 100644 --- a/packages/langchain/test/chains/retrieval_qa_test.dart +++ b/packages/langchain/test/chains/retrieval_qa_test.dart @@ -1,7 +1,4 @@ -import 'package:langchain/src/chains/chains.dart'; -import 'package:langchain/src/documents/documents.dart'; -import 'package:langchain/src/model_io/llms/fake.dart'; -import 'package:langchain/src/model_io/prompts/prompts.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/chains/sequential_test.dart b/packages/langchain/test/chains/sequential_test.dart index d2212e98..0e3a189c 100644 --- a/packages/langchain/test/chains/sequential_test.dart +++ b/packages/langchain/test/chains/sequential_test.dart @@ -1,5 +1,4 @@ -import 'package:langchain/src/chains/chains.dart'; -import 'package:langchain/src/memory/memory.dart'; +import 'package:langchain/langchain.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/memory/chat_message_history/in_memory_test.dart b/packages/langchain/test/chat_history/in_memory_test.dart similarity index 100% rename from packages/langchain/test/memory/chat_message_history/in_memory_test.dart rename to packages/langchain/test/chat_history/in_memory_test.dart diff --git a/packages/langchain/test/documents/stores/in_memory.dart b/packages/langchain/test/documents/stores/in_memory.dart deleted file mode 100644 index e3f5e742..00000000 --- a/packages/langchain/test/documents/stores/in_memory.dart +++ /dev/null @@ -1,55 +0,0 @@ -import 'package:langchain/langchain.dart'; -import 'package:test/test.dart'; - -void main() { - group('InMemoryDocStore tests', () { - late InMemoryDocStore store; - - final Map initialDocs = { - 'doc1': const Document( - id: 'doc1', - pageContent: 'content', - metadata: {'author': 'Author1'}, - ), - 'doc2': const Document( - id: 'doc2', - pageContent: 'content', - metadata: {'author': 'Author2'}, - ), - }; - - setUp(() { - store = InMemoryDocStore(initialDocuments: initialDocs); - }); - - test('search returns the correct document for an existing id', () async { - final doc = await store.search('doc1'); - expect(doc, equals(initialDocs['doc1'])); - }); - - test('search throws an exception for a non-existent id', () async { - expect( - () => store.search('non-existent'), - throwsA(isA()), - ); - }); - - test('add inserts new documents into the document store', () async { - final newDocs = { - 'doc3': const Document(id: 'doc3', pageContent: 'content3'), - 'doc4': const Document(id: 'doc4', pageContent: 'content4'), - }; - - await store.add(newDocs); - - expect(await store.search('doc3'), equals(newDocs['doc3'])); - expect(await store.search('doc4'), equals(newDocs['doc4'])); - }); - - test('delete removes documents from the document store', () async { - await store.delete(['doc1']); - - expect(() => store.search('doc1'), throwsA(isA())); - }); - }); -} diff --git a/packages/langchain/test/documents/embeddings/cache.dart b/packages/langchain/test/embeddings/cache.dart similarity index 100% rename from packages/langchain/test/documents/embeddings/cache.dart rename to packages/langchain/test/embeddings/cache.dart diff --git a/packages/langchain/test/storage/encoder_backed.dart b/packages/langchain/test/stores/encoder_backed.dart similarity index 100% rename from packages/langchain/test/storage/encoder_backed.dart rename to packages/langchain/test/stores/encoder_backed.dart diff --git a/packages/langchain/test/storage/file_system.dart b/packages/langchain/test/stores/file_system.dart similarity index 100% rename from packages/langchain/test/storage/file_system.dart rename to packages/langchain/test/stores/file_system.dart diff --git a/packages/langchain/test/storage/in_memory.dart b/packages/langchain/test/stores/in_memory.dart similarity index 100% rename from packages/langchain/test/storage/in_memory.dart rename to packages/langchain/test/stores/in_memory.dart diff --git a/packages/langchain/test/documents/transformers/text_splitters/character_test.dart b/packages/langchain/test/text_splitters/character_test.dart similarity index 91% rename from packages/langchain/test/documents/transformers/text_splitters/character_test.dart rename to packages/langchain/test/text_splitters/character_test.dart index 5d2f3f0d..cf453ae0 100644 --- a/packages/langchain/test/documents/transformers/text_splitters/character_test.dart +++ b/packages/langchain/test/text_splitters/character_test.dart @@ -401,4 +401,51 @@ void main() { expect(docs, equals(expectedDocs)); }); }); + + group('Runnable tests', () { + test('DocumentTransformer as Runnable', () async { + const run = CharacterTextSplitter( + separator: ' ', + chunkSize: 7, + chunkOverlap: 3, + ); + final res = await run.invoke([ + const Document(pageContent: 'foo bar baz 123'), + ]); + expect( + res, + equals([ + const Document(pageContent: 'foo bar'), + const Document(pageContent: 'bar baz'), + const Document(pageContent: 'baz 123'), + ]), + ); + }); + + + test('Streaming DocumentTransformer', () async { + const run = CharacterTextSplitter( + separator: ' ', + chunkSize: 7, + chunkOverlap: 3, + ); + final stream = run.stream([ + const Document(pageContent: 'foo bar baz 123'), + ]); + + final streamList = await stream.toList(); + expect(streamList.length, 1); + expect(streamList.first, isA>()); + + final item = streamList.first; + expect( + item, + [ + const Document(pageContent: 'foo bar'), + const Document(pageContent: 'bar baz'), + const Document(pageContent: 'baz 123'), + ], + ); + }); + }); } diff --git a/packages/langchain/test/documents/transformers/text_splitters/code_test.dart b/packages/langchain/test/text_splitters/code_test.dart similarity index 100% rename from packages/langchain/test/documents/transformers/text_splitters/code_test.dart rename to packages/langchain/test/text_splitters/code_test.dart diff --git a/packages/langchain/test/documents/transformers/text_splitters/recursive_character_test.dart b/packages/langchain/test/text_splitters/recursive_character_test.dart similarity index 100% rename from packages/langchain/test/documents/transformers/text_splitters/recursive_character_test.dart rename to packages/langchain/test/text_splitters/recursive_character_test.dart diff --git a/packages/langchain/test/documents/transformers/text_splitters/utils_test.dart b/packages/langchain/test/text_splitters/utils_test.dart similarity index 93% rename from packages/langchain/test/documents/transformers/text_splitters/utils_test.dart rename to packages/langchain/test/text_splitters/utils_test.dart index 31e7c3cb..8831f1a1 100644 --- a/packages/langchain/test/documents/transformers/text_splitters/utils_test.dart +++ b/packages/langchain/test/text_splitters/utils_test.dart @@ -1,4 +1,4 @@ -import 'package:langchain/src/documents/transformers/text_splitters/utils.dart'; +import 'package:langchain/src/text_splitters/utils.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/documents/vector_stores/memory_test.dart b/packages/langchain/test/vector_stores/memory_test.dart similarity index 100% rename from packages/langchain/test/documents/vector_stores/memory_test.dart rename to packages/langchain/test/vector_stores/memory_test.dart diff --git a/packages/langchain_amazon/pubspec.yaml b/packages/langchain_amazon/pubspec.yaml index 1fc430f6..41af11b0 100644 --- a/packages/langchain_amazon/pubspec.yaml +++ b/packages/langchain_amazon/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_amazon/pubspec_overrides.yaml b/packages/langchain_amazon/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_amazon/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_anthropic/pubspec.yaml b/packages/langchain_anthropic/pubspec.yaml index 534380c6..de768b22 100644 --- a/packages/langchain_anthropic/pubspec.yaml +++ b/packages/langchain_anthropic/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_anthropic/pubspec_overrides.yaml b/packages/langchain_anthropic/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_anthropic/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_chroma/lib/src/vector_stores/chroma.dart b/packages/langchain_chroma/lib/src/vector_stores/chroma.dart index a379f54c..9ed252ba 100644 --- a/packages/langchain_chroma/lib/src/vector_stores/chroma.dart +++ b/packages/langchain_chroma/lib/src/vector_stores/chroma.dart @@ -1,9 +1,10 @@ import 'package:chromadb/chromadb.dart'; import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:uuid/uuid.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template chroma} /// Vector store for Chroma open-source embedding database. diff --git a/packages/langchain_chroma/lib/src/vector_stores/models/models.dart b/packages/langchain_chroma/lib/src/vector_stores/types.dart similarity index 95% rename from packages/langchain_chroma/lib/src/vector_stores/models/models.dart rename to packages/langchain_chroma/lib/src/vector_stores/types.dart index 9afa8909..0fbf4eac 100644 --- a/packages/langchain_chroma/lib/src/vector_stores/models/models.dart +++ b/packages/langchain_chroma/lib/src/vector_stores/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/vector_stores.dart'; /// {@template chroma_similarity_search} /// Chroma similarity search config. diff --git a/packages/langchain_chroma/lib/src/vector_stores/vector_stores.dart b/packages/langchain_chroma/lib/src/vector_stores/vector_stores.dart index 7a264efa..09de65f6 100644 --- a/packages/langchain_chroma/lib/src/vector_stores/vector_stores.dart +++ b/packages/langchain_chroma/lib/src/vector_stores/vector_stores.dart @@ -1,2 +1,2 @@ export 'chroma.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain_chroma/pubspec.yaml b/packages/langchain_chroma/pubspec.yaml index 5c89980b..822e27b0 100644 --- a/packages/langchain_chroma/pubspec.yaml +++ b/packages/langchain_chroma/pubspec.yaml @@ -19,10 +19,12 @@ environment: dependencies: chromadb: ^0.1.2 http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 meta: ^1.9.1 uuid: ^4.0.0 dev_dependencies: test: ^1.25.2 + langchain: ^0.4.2 + langchain_community: 0.0.1-dev.2 langchain_openai: ^0.4.1 diff --git a/packages/langchain_chroma/pubspec_overrides.yaml b/packages/langchain_chroma/pubspec_overrides.yaml index 5d933f48..4583d481 100644 --- a/packages/langchain_chroma/pubspec_overrides.yaml +++ b/packages/langchain_chroma/pubspec_overrides.yaml @@ -1,9 +1,13 @@ -# melos_managed_dependency_overrides: chromadb,langchain,langchain_openai,openai_dart +# melos_managed_dependency_overrides: chromadb,langchain_openai,openai_dart,langchain_core,langchain_community,langchain dependency_overrides: chromadb: path: ../chromadb langchain: path: ../langchain + langchain_community: + path: ../langchain_community + langchain_core: + path: ../langchain_core langchain_openai: path: ../langchain_openai openai_dart: diff --git a/packages/langchain_chroma/test/vector_stores/chroma_test.dart b/packages/langchain_chroma/test/vector_stores/chroma_test.dart index 8c46af3b..90c913d2 100644 --- a/packages/langchain_chroma/test/vector_stores/chroma_test.dart +++ b/packages/langchain_chroma/test/vector_stores/chroma_test.dart @@ -3,8 +3,10 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain/langchain.dart' show RecursiveCharacterTextSplitter; import 'package:langchain_chroma/langchain_chroma.dart'; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_cohere/pubspec.yaml b/packages/langchain_cohere/pubspec.yaml index 3707a44c..bcb53a98 100644 --- a/packages/langchain_cohere/pubspec.yaml +++ b/packages/langchain_cohere/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_cohere/pubspec_overrides.yaml b/packages/langchain_cohere/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_cohere/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_community/lib/langchain_community.dart b/packages/langchain_community/lib/langchain_community.dart index d40fcd58..3aee4cf9 100644 --- a/packages/langchain_community/lib/langchain_community.dart +++ b/packages/langchain_community/lib/langchain_community.dart @@ -1,2 +1,5 @@ /// LangChain.dart third-party integrations that don't have a dedicated package. library; + +export 'src/document_loaders/document_loaders.dart'; +export 'src/tools/tools.dart'; diff --git a/packages/langchain/lib/src/documents/loaders/csv.dart b/packages/langchain_community/lib/src/document_loaders/csv.dart similarity index 98% rename from packages/langchain/lib/src/documents/loaders/csv.dart rename to packages/langchain_community/lib/src/document_loaders/csv.dart index 95043ad5..155e520d 100644 --- a/packages/langchain/lib/src/documents/loaders/csv.dart +++ b/packages/langchain_community/lib/src/document_loaders/csv.dart @@ -2,9 +2,8 @@ import 'dart:convert'; import 'package:cross_file/cross_file.dart'; import 'package:csv/csv.dart'; - -import '../models/models.dart'; -import 'base.dart'; +import 'package:langchain_core/document_loaders.dart'; +import 'package:langchain_core/documents.dart'; /// {@template csv_loader} /// A document loader for loading documents from CSV or TSV files. diff --git a/packages/langchain/lib/src/documents/loaders/loaders.dart b/packages/langchain_community/lib/src/document_loaders/document_loaders.dart similarity index 79% rename from packages/langchain/lib/src/documents/loaders/loaders.dart rename to packages/langchain_community/lib/src/document_loaders/document_loaders.dart index 3377620b..468fd816 100644 --- a/packages/langchain/lib/src/documents/loaders/loaders.dart +++ b/packages/langchain_community/lib/src/document_loaders/document_loaders.dart @@ -1,4 +1,3 @@ -export 'base.dart'; export 'csv.dart'; export 'json.dart'; export 'text.dart'; diff --git a/packages/langchain/lib/src/documents/loaders/json.dart b/packages/langchain_community/lib/src/document_loaders/json.dart similarity index 96% rename from packages/langchain/lib/src/documents/loaders/json.dart rename to packages/langchain_community/lib/src/document_loaders/json.dart index dfb3d1b1..7c8403cd 100644 --- a/packages/langchain/lib/src/documents/loaders/json.dart +++ b/packages/langchain_community/lib/src/document_loaders/json.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'package:cross_file/cross_file.dart'; import 'package:json_path/json_path.dart'; -import '../models/models.dart'; -import 'base.dart'; +import 'package:langchain_core/document_loaders.dart'; +import 'package:langchain_core/documents.dart'; /// {@template json_loader} /// A document loader that loads a [Document]s from a JSON file. diff --git a/packages/langchain/lib/src/documents/loaders/text.dart b/packages/langchain_community/lib/src/document_loaders/text.dart similarity index 90% rename from packages/langchain/lib/src/documents/loaders/text.dart rename to packages/langchain_community/lib/src/document_loaders/text.dart index 476161d9..909d5cc8 100644 --- a/packages/langchain/lib/src/documents/loaders/text.dart +++ b/packages/langchain_community/lib/src/document_loaders/text.dart @@ -1,7 +1,7 @@ import 'package:cross_file/cross_file.dart'; -import '../models/models.dart'; -import 'base.dart'; +import 'package:langchain_core/document_loaders.dart'; +import 'package:langchain_core/documents.dart'; /// {@template text_loader} /// A document loader that loads a [Document] from a text file. diff --git a/packages/langchain/lib/src/documents/loaders/web.dart b/packages/langchain_community/lib/src/document_loaders/web.dart similarity index 95% rename from packages/langchain/lib/src/documents/loaders/web.dart rename to packages/langchain_community/lib/src/document_loaders/web.dart index cc4c979b..c6af45c1 100644 --- a/packages/langchain/lib/src/documents/loaders/web.dart +++ b/packages/langchain_community/lib/src/document_loaders/web.dart @@ -1,8 +1,8 @@ import 'package:beautiful_soup_dart/beautiful_soup.dart'; import 'package:http/http.dart' as http; -import '../models/models.dart'; -import 'base.dart'; +import 'package:langchain_core/document_loaders.dart'; +import 'package:langchain_core/documents.dart'; /// {@template web_base_loader} /// A document loader that loads [Document]s from web pages. diff --git a/packages/langchain/lib/src/agents/tools/calculator.dart b/packages/langchain_community/lib/src/tools/calculator.dart similarity index 93% rename from packages/langchain/lib/src/agents/tools/calculator.dart rename to packages/langchain_community/lib/src/tools/calculator.dart index c34fcb78..f3b5bfa5 100644 --- a/packages/langchain/lib/src/agents/tools/calculator.dart +++ b/packages/langchain_community/lib/src/tools/calculator.dart @@ -1,10 +1,8 @@ import 'dart:async'; +import 'package:langchain_core/tools.dart'; import 'package:math_expressions/math_expressions.dart'; -import 'base.dart'; -import 'models/models.dart'; - /// {@template calculator_tool} /// A tool that can be used to calculate the result of a math expression. /// @@ -29,7 +27,8 @@ final class CalculatorTool extends Tool { name: 'calculator', description: 'Useful for getting the result of a math expression ' 'that could be executed by a simple calculator.', - inputDescription: 'A valid mathematical expression to evaluate', + inputDescription: 'A valid mathematical expression to evaluate. ' + 'For example: "(x^2 + cos(y)) / 3".', ); final _parser = Parser(); diff --git a/packages/langchain_community/lib/src/tools/tools.dart b/packages/langchain_community/lib/src/tools/tools.dart new file mode 100644 index 00000000..9601880a --- /dev/null +++ b/packages/langchain_community/lib/src/tools/tools.dart @@ -0,0 +1 @@ +export 'calculator.dart'; diff --git a/packages/langchain_community/pubspec.yaml b/packages/langchain_community/pubspec.yaml index 4db6d174..d0a281d1 100644 --- a/packages/langchain_community/pubspec.yaml +++ b/packages/langchain_community/pubspec.yaml @@ -16,6 +16,13 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: + beautiful_soup_dart: ^0.3.0 + cross_file: ^0.3.3+4 + csv: ^5.1.0 + http: ^1.1.0 + json_path: ^0.7.0 + langchain_core: ^0.0.1-dev.2 + math_expressions: ^2.4.0 meta: ^1.9.1 dev_dependencies: diff --git a/packages/langchain_community/pubspec_overrides.yaml b/packages/langchain_community/pubspec_overrides.yaml new file mode 100644 index 00000000..3508ed77 --- /dev/null +++ b/packages/langchain_community/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: langchain_core +dependency_overrides: + langchain_core: + path: ../langchain_core diff --git a/packages/langchain/test/documents/loaders/assets/example.txt b/packages/langchain_community/test/document_loaders/assets/example.txt similarity index 100% rename from packages/langchain/test/documents/loaders/assets/example.txt rename to packages/langchain_community/test/document_loaders/assets/example.txt diff --git a/packages/langchain/test/documents/loaders/assets/example_1.csv b/packages/langchain_community/test/document_loaders/assets/example_1.csv similarity index 100% rename from packages/langchain/test/documents/loaders/assets/example_1.csv rename to packages/langchain_community/test/document_loaders/assets/example_1.csv diff --git a/packages/langchain/test/documents/loaders/assets/example_1.json b/packages/langchain_community/test/document_loaders/assets/example_1.json similarity index 100% rename from packages/langchain/test/documents/loaders/assets/example_1.json rename to packages/langchain_community/test/document_loaders/assets/example_1.json diff --git a/packages/langchain/test/documents/loaders/assets/example_2.csv b/packages/langchain_community/test/document_loaders/assets/example_2.csv similarity index 100% rename from packages/langchain/test/documents/loaders/assets/example_2.csv rename to packages/langchain_community/test/document_loaders/assets/example_2.csv diff --git a/packages/langchain/test/documents/loaders/assets/example_2.json b/packages/langchain_community/test/document_loaders/assets/example_2.json similarity index 100% rename from packages/langchain/test/documents/loaders/assets/example_2.json rename to packages/langchain_community/test/document_loaders/assets/example_2.json diff --git a/packages/langchain/test/documents/loaders/assets/example_2.tsv b/packages/langchain_community/test/document_loaders/assets/example_2.tsv similarity index 100% rename from packages/langchain/test/documents/loaders/assets/example_2.tsv rename to packages/langchain_community/test/document_loaders/assets/example_2.tsv diff --git a/packages/langchain/test/documents/loaders/csv_test.dart b/packages/langchain_community/test/document_loaders/csv_test.dart similarity index 89% rename from packages/langchain/test/documents/loaders/csv_test.dart rename to packages/langchain_community/test/document_loaders/csv_test.dart index 42991f00..b9ac695a 100644 --- a/packages/langchain/test/documents/loaders/csv_test.dart +++ b/packages/langchain_community/test/document_loaders/csv_test.dart @@ -1,10 +1,11 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/documents.dart'; import 'package:test/test.dart'; void main() { group('CsvLoader tests', () { test('Test that a csv file can be loaded', () async { - const filePath = './test/documents/loaders/assets/example_1.csv'; + const filePath = './test/document_loaders/assets/example_1.csv'; const expectedDoc = Document( pageContent: 'Foo: Foo\nBar: Bar\nBaz: Baz', @@ -23,7 +24,7 @@ void main() { }); test('Test field names override', () async { - const filePath = './test/documents/loaders/assets/example_2.csv'; + const filePath = './test/document_loaders/assets/example_2.csv'; final loader = CsvLoader( filePath, @@ -67,7 +68,7 @@ void main() { }); test('Test extracting field', () async { - const filePath = './test/documents/loaders/assets/example_2.csv'; + const filePath = './test/document_loaders/assets/example_2.csv'; final loader = CsvLoader( filePath, @@ -86,7 +87,7 @@ void main() { }); test('Test extracting field and override name', () async { - const filePath = './test/documents/loaders/assets/example_2.csv'; + const filePath = './test/document_loaders/assets/example_2.csv'; final loader = CsvLoader( filePath, @@ -106,7 +107,7 @@ void main() { }); test('test invalid column throws exception', () async { - const filePath = './test/documents/loaders/assets/example_2.csv'; + const filePath = './test/document_loaders/assets/example_2.csv'; final loader = CsvLoader( filePath, @@ -117,7 +118,7 @@ void main() { }); test('test custom source metadata', () async { - const filePath = './test/documents/loaders/assets/example_2.csv'; + const filePath = './test/document_loaders/assets/example_2.csv'; final loader = CsvLoader( filePath, @@ -145,7 +146,7 @@ void main() { }); test('Test metadata builder', () async { - const filePath = './test/documents/loaders/assets/example_2.csv'; + const filePath = './test/document_loaders/assets/example_2.csv'; final loader = CsvLoader( filePath, @@ -169,7 +170,7 @@ void main() { }); test('Test TSV file', () async { - const filePath = './test/documents/loaders/assets/example_2.tsv'; + const filePath = './test/document_loaders/assets/example_2.tsv'; final loader = CsvLoader( filePath, diff --git a/packages/langchain/test/documents/loaders/json_test.dart b/packages/langchain_community/test/document_loaders/json_test.dart similarity index 86% rename from packages/langchain/test/documents/loaders/json_test.dart rename to packages/langchain_community/test/document_loaders/json_test.dart index ba1afcd6..25d39d4d 100644 --- a/packages/langchain/test/documents/loaders/json_test.dart +++ b/packages/langchain_community/test/document_loaders/json_test.dart @@ -1,10 +1,11 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/documents.dart'; import 'package:test/test.dart'; void main() { group('JsonLoader tests', () { test('Test that a json file can be loaded', () async { - const filePath = './test/documents/loaders/assets/example_1.json'; + const filePath = './test/document_loaders/assets/example_1.json'; const loader = JsonLoader( filePath, @@ -28,7 +29,7 @@ void main() { }); test('test extracting numeric field', () async { - const filePath = './test/documents/loaders/assets/example_2.json'; + const filePath = './test/document_loaders/assets/example_2.json'; const loader = JsonLoader( filePath, @@ -48,7 +49,7 @@ void main() { }); test('test extracting string field', () async { - const filePath = './test/documents/loaders/assets/example_2.json'; + const filePath = './test/document_loaders/assets/example_2.json'; const loader = JsonLoader( filePath, @@ -78,7 +79,7 @@ void main() { }); test('test custom metadata', () async { - const filePath = './test/documents/loaders/assets/example_2.json'; + const filePath = './test/document_loaders/assets/example_2.json'; final loader = JsonLoader( filePath, diff --git a/packages/langchain/test/documents/loaders/text_test.dart b/packages/langchain_community/test/document_loaders/text_test.dart similarity index 78% rename from packages/langchain/test/documents/loaders/text_test.dart rename to packages/langchain_community/test/document_loaders/text_test.dart index 5b4bdd83..2d6af526 100644 --- a/packages/langchain/test/documents/loaders/text_test.dart +++ b/packages/langchain_community/test/document_loaders/text_test.dart @@ -1,10 +1,11 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/documents.dart'; import 'package:test/test.dart'; void main() { group('TextLoader tests', () { test('Test that a text file can be loaded', () async { - const filePath = './test/documents/loaders/assets/example.txt'; + const filePath = './test/document_loaders/assets/example.txt'; const loader = TextLoader(filePath); expect( loader.lazyLoad(), diff --git a/packages/langchain/test/documents/loaders/web_test.dart b/packages/langchain_community/test/document_loaders/web_test.dart similarity index 93% rename from packages/langchain/test/documents/loaders/web_test.dart rename to packages/langchain_community/test/document_loaders/web_test.dart index 81c90469..5b4059d0 100644 --- a/packages/langchain/test/documents/loaders/web_test.dart +++ b/packages/langchain_community/test/document_loaders/web_test.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_community/langchain_community.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/agents/tools/calculator_test.dart b/packages/langchain_community/test/tools/calculator_test.dart similarity index 83% rename from packages/langchain/test/agents/tools/calculator_test.dart rename to packages/langchain_community/test/tools/calculator_test.dart index 33e2bb3a..1499208c 100644 --- a/packages/langchain/test/agents/tools/calculator_test.dart +++ b/packages/langchain_community/test/tools/calculator_test.dart @@ -1,4 +1,5 @@ -import 'package:langchain/src/agents/tools/tools.dart'; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/tools.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain_core/lib/agents.dart b/packages/langchain_core/lib/agents.dart new file mode 100644 index 00000000..e99fdb9f --- /dev/null +++ b/packages/langchain_core/lib/agents.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to agents. +library agents; + +export 'src/agents/agents.dart'; diff --git a/packages/langchain_core/lib/chains.dart b/packages/langchain_core/lib/chains.dart new file mode 100644 index 00000000..3214cef2 --- /dev/null +++ b/packages/langchain_core/lib/chains.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to chains. +library chains; + +export 'src/chains/chains.dart'; diff --git a/packages/langchain_core/lib/chat_history.dart b/packages/langchain_core/lib/chat_history.dart new file mode 100644 index 00000000..316cbccc --- /dev/null +++ b/packages/langchain_core/lib/chat_history.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to chat history. +library chat_history; + +export 'src/chat_history/chat_history.dart'; diff --git a/packages/langchain_core/lib/chat_models.dart b/packages/langchain_core/lib/chat_models.dart new file mode 100644 index 00000000..803668df --- /dev/null +++ b/packages/langchain_core/lib/chat_models.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to chat models. +library chat_models; + +export 'src/chat_models/chat_models.dart'; diff --git a/packages/langchain_core/lib/document_loaders.dart b/packages/langchain_core/lib/document_loaders.dart new file mode 100644 index 00000000..51fdbead --- /dev/null +++ b/packages/langchain_core/lib/document_loaders.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to document loaders. +library document_loaders; + +export 'src/document_loaders/document_loaders.dart'; diff --git a/packages/langchain_core/lib/documents.dart b/packages/langchain_core/lib/documents.dart new file mode 100644 index 00000000..24d340a4 --- /dev/null +++ b/packages/langchain_core/lib/documents.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to documents. +library documents; + +export 'src/documents/documents.dart'; diff --git a/packages/langchain_core/lib/embeddings.dart b/packages/langchain_core/lib/embeddings.dart new file mode 100644 index 00000000..829de2c7 --- /dev/null +++ b/packages/langchain_core/lib/embeddings.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to embeddings. +library embeddings; + +export 'src/embeddings/embeddings.dart'; diff --git a/packages/langchain_core/lib/exceptions.dart b/packages/langchain_core/lib/exceptions.dart new file mode 100644 index 00000000..4371a3a3 --- /dev/null +++ b/packages/langchain_core/lib/exceptions.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to exceptions. +library exceptions; + +export 'src/exceptions/exceptions.dart'; diff --git a/packages/langchain_core/lib/langchain.dart b/packages/langchain_core/lib/langchain.dart new file mode 100644 index 00000000..b30c4d14 --- /dev/null +++ b/packages/langchain_core/lib/langchain.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to LangChain. +library langchain; + +export 'src/langchain/langchain.dart'; diff --git a/packages/langchain_core/lib/langchain_core.dart b/packages/langchain_core/lib/langchain_core.dart deleted file mode 100644 index 4cd2d300..00000000 --- a/packages/langchain_core/lib/langchain_core.dart +++ /dev/null @@ -1,2 +0,0 @@ -/// Contains core abstractions of LangChain.dart and the LangChain Expression Language (LCEL). -library; diff --git a/packages/langchain_core/lib/language_models.dart b/packages/langchain_core/lib/language_models.dart new file mode 100644 index 00000000..7cabafc7 --- /dev/null +++ b/packages/langchain_core/lib/language_models.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to language models. +library language_models; + +export 'src/language_models/language_models.dart'; diff --git a/packages/langchain_core/lib/llms.dart b/packages/langchain_core/lib/llms.dart new file mode 100644 index 00000000..5b98240d --- /dev/null +++ b/packages/langchain_core/lib/llms.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to LLMs. +library llms; + +export 'src/llms/llms.dart'; diff --git a/packages/langchain_core/lib/memory.dart b/packages/langchain_core/lib/memory.dart new file mode 100644 index 00000000..b79467cf --- /dev/null +++ b/packages/langchain_core/lib/memory.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to memory. +library memory; + +export 'src/memory/memory.dart'; diff --git a/packages/langchain_core/lib/output_parsers.dart b/packages/langchain_core/lib/output_parsers.dart new file mode 100644 index 00000000..7f0d0d5f --- /dev/null +++ b/packages/langchain_core/lib/output_parsers.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to output parsers. +library output_parsers; + +export 'src/output_parsers/output_parsers.dart'; diff --git a/packages/langchain_core/lib/prompts.dart b/packages/langchain_core/lib/prompts.dart new file mode 100644 index 00000000..dbb7ef5b --- /dev/null +++ b/packages/langchain_core/lib/prompts.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to prompts. +library prompts; + +export 'src/prompts/prompts.dart'; diff --git a/packages/langchain_core/lib/retrievers.dart b/packages/langchain_core/lib/retrievers.dart new file mode 100644 index 00000000..5b1ec71e --- /dev/null +++ b/packages/langchain_core/lib/retrievers.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to retrievers. +library retrievers; + +export 'src/retrievers/retrievers.dart'; diff --git a/packages/langchain_core/lib/runnables.dart b/packages/langchain_core/lib/runnables.dart new file mode 100644 index 00000000..e111eb58 --- /dev/null +++ b/packages/langchain_core/lib/runnables.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to runnables. +library runnables; + +export 'src/runnables/runnables.dart'; diff --git a/packages/langchain_core/lib/src/agents/agents.dart b/packages/langchain_core/lib/src/agents/agents.dart new file mode 100644 index 00000000..669a12e8 --- /dev/null +++ b/packages/langchain_core/lib/src/agents/agents.dart @@ -0,0 +1,2 @@ +export 'base.dart'; +export 'types.dart'; diff --git a/packages/langchain/lib/src/agents/agent.dart b/packages/langchain_core/lib/src/agents/base.dart similarity index 80% rename from packages/langchain/lib/src/agents/agent.dart rename to packages/langchain_core/lib/src/agents/base.dart index 92f7f979..eb95667a 100644 --- a/packages/langchain/lib/src/agents/agent.dart +++ b/packages/langchain_core/lib/src/agents/base.dart @@ -1,6 +1,8 @@ -import '../core/core.dart'; -import '../utils/exception.dart'; -import 'agents.dart'; +import '../exceptions/base.dart'; +import '../langchain/types.dart'; +import '../runnables/runnable.dart'; +import '../tools/base.dart'; +import 'types.dart'; /// {@template agent} /// An agent is a component that takes an input and a set of tools and decides @@ -12,10 +14,10 @@ abstract class Agent { /// Creates an agent from a [Runnable]. static BaseMultiActionAgent fromRunnable( - final Runnable> - runnable, { - required final List tools, - }) { + final Runnable> + runnable, { + required final List tools, + }) { return RunnableAgent(runnable, tools: tools); } } @@ -56,20 +58,20 @@ abstract class BaseActionAgent extends Agent { /// Return response when agent has been stopped due to max iterations. AgentFinish returnStoppedResponse( - final AgentEarlyStoppingMethod earlyStoppingMethod, - final List intermediateSteps, - ) { + final AgentEarlyStoppingMethod earlyStoppingMethod, + final List intermediateSteps, + ) { return switch (earlyStoppingMethod) { AgentEarlyStoppingMethod.force => const AgentFinish( - returnValues: { - agentReturnKey: - 'Agent stopped due to iteration limit or time limit.', - }, - ), + returnValues: { + agentReturnKey: + 'Agent stopped due to iteration limit or time limit.', + }, + ), _ => throw LangChainException( - message: - 'Got unsupported early stopping method: $earlyStoppingMethod.', - ), + message: + 'Got unsupported early stopping method: $earlyStoppingMethod.', + ), }; } } @@ -99,7 +101,7 @@ class RunnableAgent extends BaseMultiActionAgent { /// The runnable that implements the agent. final Runnable> - runnable; + runnable; @override String get agentType => 'runnable-agent'; diff --git a/packages/langchain/lib/src/agents/models/models.dart b/packages/langchain_core/lib/src/agents/types.dart similarity index 96% rename from packages/langchain/lib/src/agents/models/models.dart rename to packages/langchain_core/lib/src/agents/types.dart index e051ef32..2df5486a 100644 --- a/packages/langchain/lib/src/agents/models/models.dart +++ b/packages/langchain_core/lib/src/agents/types.dart @@ -1,4 +1,4 @@ -import '../../../langchain.dart'; +import '../chat_models/types.dart'; /// {@template agent_plan_input} /// Input to the agent's plan method. @@ -11,7 +11,7 @@ class AgentPlanInput { ); /// The input values to the agent. - final ChainValues inputs; + final Map inputs; /// The actions the agent has taken to date, along with their observations. final List intermediateSteps; diff --git a/packages/langchain_core/lib/src/chains/base.dart b/packages/langchain_core/lib/src/chains/base.dart new file mode 100644 index 00000000..92804d80 --- /dev/null +++ b/packages/langchain_core/lib/src/chains/base.dart @@ -0,0 +1,188 @@ +import 'package:meta/meta.dart'; + +import '../../exceptions.dart'; +import '../../langchain.dart'; +import '../../memory.dart'; +import 'types.dart'; + +/// {@template base_chain} +/// Base class for creating structured sequences of calls to components. +/// +/// Chains should be used to encode a sequence of calls to components like +/// models, document retrievers, other chains, etc., and provide a simple +/// interface to this sequence. +/// +/// The [BaseChain] interface makes it easy to create apps that are: +/// - Stateful: add Memory to any Chain to give it state. +/// - Observable: pass Callbacks to a Chain to execute additional functionality, +/// like logging, outside the main sequence of component calls. +/// - Composable: the Chain API is flexible enough that it is easy to combine +/// Chains with other components, including other Chains. +/// +/// The main methods exposed by chains are: +/// +/// - [call] Chains are callable. The [call] method is the primary way to +/// execute a Chain. This takes inputs as a dictionary and returns a +/// dictionary output. +/// - [run] A convenience method that takes inputs and returns the output as a +/// string. This method can only be used if the Chain has a single string +/// output. +/// {@endtemplate} +abstract class BaseChain + extends BaseLangChain { + /// {@macro base_chain} + const BaseChain({ + this.memory, + }); + + /// Memory to use for this chain. + final MemoryType? memory; + + /// Return the string type key uniquely identifying this class of chain. + String get chainType; + + /// Input keys for this chain. + Set get inputKeys; + + /// Output keys for this chain. + Set get outputKeys; + + /// Output key from where the [run] method needs to take the return value. + String get runOutputKey { + if (outputKeys.length != 1) { + throw LangChainException( + message: '`chain.run` method can only be used with chains that return ' + 'a single string output. $chainType chain returns ' + '${outputKeys.length} output: $outputKeys. ' + 'Use `chain.call` method instead.', + ); + } + return outputKeys.first; + } + + /// Default input key for the input of the chain. + static const String defaultInputKey = 'input'; + + /// Default output key for the output of the chain. + static const defaultOutputKey = 'output'; + + /// Runs the core logic of this chain with the given input. + /// + /// - [input] is the input to this chain. + /// - [options] not used. + @override + Future invoke( + final ChainValues input, { + final ChainOptions? options, + }) { + return call(input); + } + + /// Runs the core logic of this chain with the given values. + /// If [memory] is not null, it will be used to load and save values. + /// + /// - [inputs] are the inputs to this chain. Assumed to contain all inputs + /// specified in [inputKeys], including any inputs added by [memory]. + /// - [returnOnlyOutputs] if true the chain will only return the outputs of + /// this chain. If false, the chain will return all inputs and outputs. + /// + /// Returns a dictionary of outputs. It should contain all outputs specified + /// in [outputKeys]. + Future call( + final dynamic input, { + final bool returnOnlyOutputs = false, + }) async { + ChainValues chainValues; + + if (input is Map) { + chainValues = input.cast(); + } else { + chainValues = {inputKeys.firstOrNull ?? defaultInputKey: input}; + } + + if (inputKeys.isNotEmpty) { + if (chainValues.length < inputKeys.length) { + throw ArgumentError( + 'This chain ($chainType) requires ${inputKeys.length} input values ' + 'but only ${chainValues.length} were provided.', + ); + } + final chainValuesKeys = chainValues.keys.toSet(); + final inputKeysDiff = inputKeys.difference(chainValuesKeys); + if (inputKeysDiff.isNotEmpty) { + throw ArgumentError( + 'This chain ($chainType) also requires $inputKeysDiff input values.', + ); + } + } + + final memory = this.memory; + if (memory != null) { + final newValues = await memory.loadMemoryVariables(chainValues); + chainValues.addAll(newValues); + } + + final outputValues = await callInternal(chainValues); + + if (memory != null) { + await memory.saveContext( + inputValues: chainValues, + outputValues: outputValues, + ); + } + + if (outputKeys.isNotEmpty) { + if (outputValues.length < outputKeys.length) { + throw ArgumentError( + 'This chain ($chainType) expects ${outputKeys.length} output values ' + 'but only ${outputValues.length} were returned.', + ); + } + final outputValuesKeys = outputValues.keys.toSet(); + final outputKeysDiff = outputKeys.difference(outputValuesKeys); + if (outputKeysDiff.isNotEmpty) { + throw ArgumentError( + 'This chain ($chainType) also expects $outputKeysDiff output values.', + ); + } + } + + if (returnOnlyOutputs) { + return outputValues; + } + + return {...chainValues, ...outputValues}; + } + + /// Call method to be implemented by subclasses (called by [call]). + /// This is where the core logic of the chain should be implemented. + @protected + Future callInternal(final ChainValues inputs); + + /// Call the chain on all inputs in the list. + Future> apply(final List inputs) async { + return Future.wait(inputs.map(call)); + } + + /// Convenience method for executing chain when there's a single string + /// output. + /// + /// The main difference between this method and [call] is that this method + /// can only be used for chains that return a single string output. If a + /// Chain has more outputs, the output is not a string, or you want to return + /// the inputs/run info along with the outputs, use [call]. + /// + /// If [run] is called on a chain that does not return a string, + /// [Object.toString] will be called on the output. + /// + /// The input can be: + /// - A single value, if the chain has a single input key. + /// Eg: `chain.run('Hello world!')` + /// - A map of key->values, if the chain has multiple input keys. + /// Eg: `chain.run({'foo': 'Hello', 'bar': 'world!'})` + Future run(final dynamic input) async { + final outputKey = runOutputKey; + final returnValues = await call(input, returnOnlyOutputs: true); + return returnValues[outputKey].toString(); + } +} diff --git a/packages/langchain_core/lib/src/chains/chains.dart b/packages/langchain_core/lib/src/chains/chains.dart new file mode 100644 index 00000000..6e066696 --- /dev/null +++ b/packages/langchain_core/lib/src/chains/chains.dart @@ -0,0 +1,3 @@ +export 'base.dart'; +export 'llm_chain.dart'; +export 'types.dart'; diff --git a/packages/langchain/lib/src/chains/llm_chain.dart b/packages/langchain_core/lib/src/chains/llm_chain.dart similarity index 87% rename from packages/langchain/lib/src/chains/llm_chain.dart rename to packages/langchain_core/lib/src/chains/llm_chain.dart index d25bfe82..01da4b94 100644 --- a/packages/langchain/lib/src/chains/llm_chain.dart +++ b/packages/langchain_core/lib/src/chains/llm_chain.dart @@ -1,9 +1,16 @@ -import '../memory/base.dart'; -import '../model_io/model_io.dart'; +import '../../language_models.dart'; +import '../../memory.dart'; +import '../../output_parsers.dart'; +import '../../prompts.dart'; + import 'base.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template llm_chain} +/// > NOTE: Chains are the legacy way of using LangChain and will eventually be +/// > removed. Use LangChain Expression Language (LCEL) instead, a more flexible +/// > and powerful way to combine different components. +/// /// Chain to run queries against LLMs. /// /// It takes in a prompt template, formats it with the user input and returns diff --git a/packages/langchain/lib/src/chains/models/models.dart b/packages/langchain_core/lib/src/chains/types.dart similarity index 90% rename from packages/langchain/lib/src/chains/models/models.dart rename to packages/langchain_core/lib/src/chains/types.dart index 942ef942..a2bcea2a 100644 --- a/packages/langchain/lib/src/chains/models/models.dart +++ b/packages/langchain_core/lib/src/chains/types.dart @@ -1,6 +1,6 @@ import 'package:meta/meta.dart'; -import '../../core/core.dart'; +import '../langchain/types.dart'; /// Values to be used in the chain. typedef ChainValues = Map; diff --git a/packages/langchain/lib/src/memory/chat_message_history/base.dart b/packages/langchain_core/lib/src/chat_history/base.dart similarity index 96% rename from packages/langchain/lib/src/memory/chat_message_history/base.dart rename to packages/langchain_core/lib/src/chat_history/base.dart index 1ae4a3c7..b02c9a67 100644 --- a/packages/langchain/lib/src/memory/chat_message_history/base.dart +++ b/packages/langchain_core/lib/src/chat_history/base.dart @@ -1,4 +1,4 @@ -import '../../model_io/chat_models/models/models.dart'; +import '../chat_models/types.dart'; /// {@template base_chat_message_history} /// Base interface for chat message history. diff --git a/packages/langchain_core/lib/src/chat_history/chat_history.dart b/packages/langchain_core/lib/src/chat_history/chat_history.dart new file mode 100644 index 00000000..cb608059 --- /dev/null +++ b/packages/langchain_core/lib/src/chat_history/chat_history.dart @@ -0,0 +1 @@ +export 'base.dart'; diff --git a/packages/langchain/lib/src/model_io/chat_models/base.dart b/packages/langchain_core/lib/src/chat_models/base.dart similarity index 97% rename from packages/langchain/lib/src/model_io/chat_models/base.dart rename to packages/langchain_core/lib/src/chat_models/base.dart index c3abaeff..0926cfba 100644 --- a/packages/langchain/lib/src/model_io/chat_models/base.dart +++ b/packages/langchain_core/lib/src/chat_models/base.dart @@ -1,8 +1,8 @@ import 'package:meta/meta.dart'; import '../language_models/base.dart'; -import '../prompts/models/models.dart'; -import 'models/models.dart'; +import '../prompts/types.dart'; +import 'types.dart'; /// {@template base_chat_model} /// Chat models base class. diff --git a/packages/langchain_core/lib/src/chat_models/chat_models.dart b/packages/langchain_core/lib/src/chat_models/chat_models.dart new file mode 100644 index 00000000..a2cf0302 --- /dev/null +++ b/packages/langchain_core/lib/src/chat_models/chat_models.dart @@ -0,0 +1,4 @@ +export 'base.dart'; +export 'fake.dart'; +export 'types.dart'; +export 'utils.dart'; diff --git a/packages/langchain/lib/src/model_io/chat_models/fake.dart b/packages/langchain_core/lib/src/chat_models/fake.dart similarity index 97% rename from packages/langchain/lib/src/model_io/chat_models/fake.dart rename to packages/langchain_core/lib/src/chat_models/fake.dart index 5b657f60..afc0cff4 100644 --- a/packages/langchain/lib/src/model_io/chat_models/fake.dart +++ b/packages/langchain_core/lib/src/chat_models/fake.dart @@ -1,6 +1,6 @@ -import '../prompts/models/models.dart'; +import '../prompts/types.dart'; import 'base.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template fake_chat_model} /// Fake Chat Model for testing. diff --git a/packages/langchain/lib/src/model_io/chat_models/models/models.dart b/packages/langchain_core/lib/src/chat_models/types.dart similarity index 99% rename from packages/langchain/lib/src/model_io/chat_models/models/models.dart rename to packages/langchain_core/lib/src/chat_models/types.dart index 26c5f292..230fc59d 100644 --- a/packages/langchain/lib/src/model_io/chat_models/models/models.dart +++ b/packages/langchain_core/lib/src/chat_models/types.dart @@ -1,7 +1,7 @@ import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; -import '../../language_models/models/models.dart'; +import '../language_models/types.dart'; /// {@template chat_model_options} /// Generation options to pass into the Chat Model. diff --git a/packages/langchain/lib/src/model_io/chat_models/utils.dart b/packages/langchain_core/lib/src/chat_models/utils.dart similarity index 97% rename from packages/langchain/lib/src/model_io/chat_models/utils.dart rename to packages/langchain_core/lib/src/chat_models/utils.dart index ead5c61b..7591c641 100644 --- a/packages/langchain/lib/src/model_io/chat_models/utils.dart +++ b/packages/langchain_core/lib/src/chat_models/utils.dart @@ -1,4 +1,4 @@ -import 'models/models.dart'; +import 'types.dart'; /// Extensions on [List]. extension ChatMessagesX on List { diff --git a/packages/langchain/lib/src/documents/loaders/base.dart b/packages/langchain_core/lib/src/document_loaders/base.dart similarity index 65% rename from packages/langchain/lib/src/documents/loaders/base.dart rename to packages/langchain_core/lib/src/document_loaders/base.dart index bb886037..53c10ab3 100644 --- a/packages/langchain/lib/src/documents/loaders/base.dart +++ b/packages/langchain_core/lib/src/document_loaders/base.dart @@ -1,5 +1,4 @@ -import '../models/models.dart'; -import '../transformers/transformers.dart'; +import '../documents/document.dart'; /// @{template base_document_loader} /// Interface for loading documents. @@ -23,13 +22,4 @@ abstract class BaseDocumentLoader { Future> load() { return lazyLoad().toList(); } - - /// Load documents and split into chunks. - /// This method is not ideal for large datasets, use [lazyLoad] instead. - Future> loadAndSplit({ - final TextSplitter splitter = const RecursiveCharacterTextSplitter(), - }) async { - final docs = await load(); - return splitter.splitDocuments(docs); - } } diff --git a/packages/langchain_core/lib/src/document_loaders/document_loaders.dart b/packages/langchain_core/lib/src/document_loaders/document_loaders.dart new file mode 100644 index 00000000..cb608059 --- /dev/null +++ b/packages/langchain_core/lib/src/document_loaders/document_loaders.dart @@ -0,0 +1 @@ +export 'base.dart'; diff --git a/packages/langchain/lib/src/documents/models/models.dart b/packages/langchain_core/lib/src/documents/document.dart similarity index 100% rename from packages/langchain/lib/src/documents/models/models.dart rename to packages/langchain_core/lib/src/documents/document.dart diff --git a/packages/langchain_core/lib/src/documents/documents.dart b/packages/langchain_core/lib/src/documents/documents.dart new file mode 100644 index 00000000..fda566d7 --- /dev/null +++ b/packages/langchain_core/lib/src/documents/documents.dart @@ -0,0 +1,2 @@ +export 'document.dart'; +export 'transformer.dart'; diff --git a/packages/langchain/lib/src/documents/transformers/base.dart b/packages/langchain_core/lib/src/documents/transformer.dart similarity index 88% rename from packages/langchain/lib/src/documents/transformers/base.dart rename to packages/langchain_core/lib/src/documents/transformer.dart index 24a486c4..aa5fa081 100644 --- a/packages/langchain/lib/src/documents/transformers/base.dart +++ b/packages/langchain_core/lib/src/documents/transformer.dart @@ -1,5 +1,6 @@ -import '../../core/core.dart'; -import '../models/models.dart'; +import '../langchain/types.dart'; +import '../runnables/runnable.dart'; +import 'document.dart'; /// {@template base_document_transformer} /// Base interface for transforming documents. diff --git a/packages/langchain/lib/src/documents/embeddings/base.dart b/packages/langchain_core/lib/src/embeddings/base.dart similarity index 90% rename from packages/langchain/lib/src/documents/embeddings/base.dart rename to packages/langchain_core/lib/src/embeddings/base.dart index b6986699..529f917c 100644 --- a/packages/langchain/lib/src/documents/embeddings/base.dart +++ b/packages/langchain_core/lib/src/embeddings/base.dart @@ -1,4 +1,4 @@ -import '../models/models.dart'; +import '../documents/document.dart'; /// {@template embeddings} /// Interface for embedding models. diff --git a/packages/langchain/lib/src/documents/embeddings/embeddings.dart b/packages/langchain_core/lib/src/embeddings/embeddings.dart similarity index 65% rename from packages/langchain/lib/src/documents/embeddings/embeddings.dart rename to packages/langchain_core/lib/src/embeddings/embeddings.dart index cd6486ee..da332e36 100644 --- a/packages/langchain/lib/src/documents/embeddings/embeddings.dart +++ b/packages/langchain_core/lib/src/embeddings/embeddings.dart @@ -1,3 +1,2 @@ export 'base.dart'; -export 'cache.dart'; export 'fake.dart'; diff --git a/packages/langchain/lib/src/documents/embeddings/fake.dart b/packages/langchain_core/lib/src/embeddings/fake.dart similarity index 97% rename from packages/langchain/lib/src/documents/embeddings/fake.dart rename to packages/langchain_core/lib/src/embeddings/fake.dart index e823bfc4..008b55fb 100644 --- a/packages/langchain/lib/src/documents/embeddings/fake.dart +++ b/packages/langchain_core/lib/src/embeddings/fake.dart @@ -3,7 +3,7 @@ import 'dart:math'; import 'package:crypto/crypto.dart'; -import '../models/models.dart'; +import '../documents/document.dart'; import 'base.dart'; /// {@template fake_embeddings} diff --git a/packages/langchain/lib/src/utils/exception.dart b/packages/langchain_core/lib/src/exceptions/base.dart similarity index 100% rename from packages/langchain/lib/src/utils/exception.dart rename to packages/langchain_core/lib/src/exceptions/base.dart diff --git a/packages/langchain_core/lib/src/exceptions/exceptions.dart b/packages/langchain_core/lib/src/exceptions/exceptions.dart new file mode 100644 index 00000000..cb608059 --- /dev/null +++ b/packages/langchain_core/lib/src/exceptions/exceptions.dart @@ -0,0 +1 @@ +export 'base.dart'; diff --git a/packages/langchain_core/lib/src/langchain/base.dart b/packages/langchain_core/lib/src/langchain/base.dart new file mode 100644 index 00000000..d2483e6e --- /dev/null +++ b/packages/langchain_core/lib/src/langchain/base.dart @@ -0,0 +1,12 @@ +import '../runnables/runnable.dart'; +import 'types.dart'; + +/// {@template base_lang_chain} +/// Base class for LangChain components (language models, chains, tools, etc.). +/// {@endtemplate} +abstract class BaseLangChain + extends Runnable { + /// {@macro base_lang_chain} + const BaseLangChain(); +} diff --git a/packages/langchain_core/lib/src/langchain/langchain.dart b/packages/langchain_core/lib/src/langchain/langchain.dart new file mode 100644 index 00000000..669a12e8 --- /dev/null +++ b/packages/langchain_core/lib/src/langchain/langchain.dart @@ -0,0 +1,2 @@ +export 'base.dart'; +export 'types.dart'; diff --git a/packages/langchain_core/lib/src/langchain/types.dart b/packages/langchain_core/lib/src/langchain/types.dart new file mode 100644 index 00000000..5c62489c --- /dev/null +++ b/packages/langchain_core/lib/src/langchain/types.dart @@ -0,0 +1,10 @@ +import 'package:meta/meta.dart'; + +/// {@template base_lang_chain_options} +/// Base class for LangChain options. +/// {@endtemplate} +@immutable +class BaseLangChainOptions { + /// {@macro base_lang_chain_options} + const BaseLangChainOptions(); +} diff --git a/packages/langchain/lib/src/model_io/language_models/base.dart b/packages/langchain_core/lib/src/language_models/base.dart similarity index 96% rename from packages/langchain/lib/src/model_io/language_models/base.dart rename to packages/langchain_core/lib/src/language_models/base.dart index a7a7d2e5..95a8f362 100644 --- a/packages/langchain/lib/src/model_io/language_models/base.dart +++ b/packages/langchain_core/lib/src/language_models/base.dart @@ -1,8 +1,8 @@ import 'package:meta/meta.dart'; -import '../../core/core.dart'; -import '../prompts/models/models.dart'; -import 'models/models.dart'; +import '../langchain/base.dart'; +import '../prompts/types.dart'; +import 'types.dart'; /// {@template base_language_model} /// Base class for all language models. diff --git a/packages/langchain_core/lib/src/language_models/language_models.dart b/packages/langchain_core/lib/src/language_models/language_models.dart new file mode 100644 index 00000000..669a12e8 --- /dev/null +++ b/packages/langchain_core/lib/src/language_models/language_models.dart @@ -0,0 +1,2 @@ +export 'base.dart'; +export 'types.dart'; diff --git a/packages/langchain/lib/src/model_io/language_models/models/models.dart b/packages/langchain_core/lib/src/language_models/types.dart similarity index 82% rename from packages/langchain/lib/src/model_io/language_models/models/models.dart rename to packages/langchain_core/lib/src/language_models/types.dart index 75325130..88840ecc 100644 --- a/packages/langchain/lib/src/model_io/language_models/models/models.dart +++ b/packages/langchain_core/lib/src/language_models/types.dart @@ -1,7 +1,7 @@ import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; -import '../../../core/core.dart'; +import '../langchain/types.dart'; /// {@template language_model_options} /// Generation options to pass into the language model. @@ -62,18 +62,18 @@ class LanguageModelResult { @override bool operator ==(covariant final LanguageModelResult other) => identical(this, other) || - runtimeType == other.runtimeType && - id == other.id && - ListEquality>().equals( - generations, - other.generations, - ) && - usage == other.usage && - const MapEquality().equals( - modelOutput, - other.modelOutput, - ) && - streaming == other.streaming; + runtimeType == other.runtimeType && + id == other.id && + ListEquality>().equals( + generations, + other.generations, + ) && + usage == other.usage && + const MapEquality().equals( + modelOutput, + other.modelOutput, + ) && + streaming == other.streaming; @override int get hashCode => @@ -88,7 +88,7 @@ class LanguageModelResult { return LanguageModelResult( id: id, generations: generations.mapIndexed( - (final index, final generation) { + (final index, final generation) { return generation.concat(other.generations[index]); }, ).toList(growable: false), @@ -151,12 +151,12 @@ class LanguageModelUsage { @override bool operator ==(covariant final LanguageModelUsage other) => identical(this, other) || - runtimeType == other.runtimeType && - promptTokens == other.promptTokens && - promptBillableCharacters == other.promptBillableCharacters && - responseTokens == other.responseTokens && - responseBillableCharacters == other.responseBillableCharacters && - totalTokens == other.totalTokens; + runtimeType == other.runtimeType && + promptTokens == other.promptTokens && + promptBillableCharacters == other.promptBillableCharacters && + responseTokens == other.responseTokens && + responseBillableCharacters == other.responseBillableCharacters && + totalTokens == other.totalTokens; @override int get hashCode => @@ -186,9 +186,9 @@ LanguageModelUsage{ abstract class LanguageModelGeneration { /// {@macro language_model_generation} const LanguageModelGeneration( - this.output, { - this.generationInfo, - }); + this.output, { + this.generationInfo, + }); /// Generated output. final O output; @@ -203,12 +203,12 @@ abstract class LanguageModelGeneration { @override bool operator ==(covariant final LanguageModelGeneration other) => identical(this, other) || - runtimeType == other.runtimeType && - output == other.output && - const MapEquality().equals( - generationInfo, - other.generationInfo, - ); + runtimeType == other.runtimeType && + output == other.output && + const MapEquality().equals( + generationInfo, + other.generationInfo, + ); @override int get hashCode => diff --git a/packages/langchain/lib/src/model_io/llms/base.dart b/packages/langchain_core/lib/src/llms/base.dart similarity index 94% rename from packages/langchain/lib/src/model_io/llms/base.dart rename to packages/langchain_core/lib/src/llms/base.dart index 3a84f016..91982619 100644 --- a/packages/langchain/lib/src/model_io/llms/base.dart +++ b/packages/langchain_core/lib/src/llms/base.dart @@ -1,8 +1,8 @@ import 'package:meta/meta.dart'; -import '../language_models/language_models.dart'; -import '../prompts/models/models.dart'; -import 'models/models.dart'; +import '../language_models/base.dart'; +import '../prompts/types.dart'; +import 'types.dart'; /// {@template base_llm} /// Large Language Models base class. diff --git a/packages/langchain/lib/src/model_io/llms/fake.dart b/packages/langchain_core/lib/src/llms/fake.dart similarity index 97% rename from packages/langchain/lib/src/model_io/llms/fake.dart rename to packages/langchain_core/lib/src/llms/fake.dart index dd4f3f0b..093c0bf9 100644 --- a/packages/langchain/lib/src/model_io/llms/fake.dart +++ b/packages/langchain_core/lib/src/llms/fake.dart @@ -1,6 +1,6 @@ -import '../prompts/models/models.dart'; +import '../prompts/types.dart'; import 'base.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template fake_list_llm} /// Fake LLM for testing. diff --git a/packages/langchain/lib/src/model_io/llms/llms.dart b/packages/langchain_core/lib/src/llms/llms.dart similarity index 57% rename from packages/langchain/lib/src/model_io/llms/llms.dart rename to packages/langchain_core/lib/src/llms/llms.dart index 9eaecc75..10eeb1d8 100644 --- a/packages/langchain/lib/src/model_io/llms/llms.dart +++ b/packages/langchain_core/lib/src/llms/llms.dart @@ -1,3 +1,3 @@ export 'base.dart'; export 'fake.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain/lib/src/model_io/llms/models/models.dart b/packages/langchain_core/lib/src/llms/types.dart similarity index 95% rename from packages/langchain/lib/src/model_io/llms/models/models.dart rename to packages/langchain_core/lib/src/llms/types.dart index c4c9e95d..7ff6008d 100644 --- a/packages/langchain/lib/src/model_io/llms/models/models.dart +++ b/packages/langchain_core/lib/src/llms/types.dart @@ -1,6 +1,6 @@ import 'package:meta/meta.dart'; -import '../../language_models/models/models.dart'; +import '../language_models/types.dart'; /// {@template llm_options} /// Generation options to pass into the LLM. diff --git a/packages/langchain/lib/src/memory/base.dart b/packages/langchain_core/lib/src/memory/base.dart similarity index 97% rename from packages/langchain/lib/src/memory/base.dart rename to packages/langchain_core/lib/src/memory/base.dart index aadbfe42..4dd77718 100644 --- a/packages/langchain/lib/src/memory/base.dart +++ b/packages/langchain_core/lib/src/memory/base.dart @@ -1,4 +1,4 @@ -import 'models/models.dart'; +import 'types.dart'; /// {@template base_memory} /// Base interface for memory in chains. diff --git a/packages/langchain/lib/src/memory/chat.dart b/packages/langchain_core/lib/src/memory/chat.dart similarity index 85% rename from packages/langchain/lib/src/memory/chat.dart rename to packages/langchain_core/lib/src/memory/chat.dart index b329e770..f0e62f02 100644 --- a/packages/langchain/lib/src/memory/chat.dart +++ b/packages/langchain_core/lib/src/memory/chat.dart @@ -1,11 +1,10 @@ import 'dart:async'; -import '../chains/base.dart'; -import '../model_io/chat_models/models/models.dart'; -import '../utils/exception.dart'; +import '../chat_history/base.dart'; +import '../chat_models/types.dart'; +import '../exceptions/base.dart'; import 'base.dart'; -import 'chat_message_history/chat_message_history.dart'; -import 'models/models.dart'; +import 'types.dart'; import 'utils.dart'; /// {@template base_chat_memory} @@ -14,11 +13,11 @@ import 'utils.dart'; abstract base class BaseChatMemory implements BaseMemory { /// {@macro base_chat_memory} BaseChatMemory({ - final BaseChatMessageHistory? chatHistory, + required this.chatHistory, this.inputKey, this.outputKey, this.returnMessages = false, - }) : chatHistory = chatHistory ?? ChatMessageHistory(); + }); /// The chat history. final BaseChatMessageHistory chatHistory; @@ -73,8 +72,8 @@ abstract base class BaseChatMemory implements BaseMemory { outputKey = ''; } else if (outputValues.length == 1) { outputKey = outputValues.keys.first; - } else if (outputValues.containsKey(BaseChain.defaultOutputKey)) { - outputKey = BaseChain.defaultOutputKey; + } else if (outputValues.containsKey('output')) { + outputKey = 'output'; } else { throw LangChainException( message: 'One output key expected, got ${outputValues.keys}', diff --git a/packages/langchain_core/lib/src/memory/memory.dart b/packages/langchain_core/lib/src/memory/memory.dart new file mode 100644 index 00000000..81c46dbd --- /dev/null +++ b/packages/langchain_core/lib/src/memory/memory.dart @@ -0,0 +1,4 @@ +export 'base.dart'; +export 'chat.dart'; +export 'types.dart'; +export 'utils.dart'; diff --git a/packages/langchain/lib/src/memory/models/models.dart b/packages/langchain_core/lib/src/memory/types.dart similarity index 100% rename from packages/langchain/lib/src/memory/models/models.dart rename to packages/langchain_core/lib/src/memory/types.dart diff --git a/packages/langchain/lib/src/memory/utils.dart b/packages/langchain_core/lib/src/memory/utils.dart similarity index 83% rename from packages/langchain/lib/src/memory/utils.dart rename to packages/langchain_core/lib/src/memory/utils.dart index 8c2a9d59..f5fdd609 100644 --- a/packages/langchain/lib/src/memory/utils.dart +++ b/packages/langchain_core/lib/src/memory/utils.dart @@ -1,6 +1,6 @@ -import '../agents/agent.dart'; -import '../utils/exception.dart'; -import 'models/models.dart'; +import '../agents/base.dart'; +import '../exceptions/base.dart'; +import 'types.dart'; /// This function is used by memory classes to select the input value to use /// for the memory. @@ -8,9 +8,9 @@ import 'models/models.dart'; /// Given the [inputValues] and [memoryKeys], it returns the input key /// from the prompt that was filled in by the user (i.e. not a memory key). String getPromptInputKey( - final MemoryInputValues inputValues, - final Set memoryKeys, -) { + final MemoryInputValues inputValues, + final Set memoryKeys, + ) { // Reserved keys can be passed as input but is not used to format the prompt final promptInputKeys = inputValues.keys.toSet().difference({ ...memoryKeys, diff --git a/packages/langchain/lib/src/model_io/output_parsers/output_parser.dart b/packages/langchain_core/lib/src/output_parsers/base.dart similarity index 95% rename from packages/langchain/lib/src/model_io/output_parsers/output_parser.dart rename to packages/langchain_core/lib/src/output_parsers/base.dart index 78f4bb32..a7d3bbac 100644 --- a/packages/langchain/lib/src/model_io/output_parsers/output_parser.dart +++ b/packages/langchain_core/lib/src/output_parsers/base.dart @@ -1,6 +1,7 @@ -import '../../core/core.dart'; -import '../language_models/models/models.dart'; -import '../prompts/models/models.dart'; +import '../langchain/types.dart'; +import '../language_models/types.dart'; +import '../prompts/types.dart'; +import '../runnables/runnable.dart'; /// Options for formatting instructions. interface class FormatInstructionsOptions {} diff --git a/packages/langchain/lib/src/model_io/output_parsers/models/models.dart b/packages/langchain_core/lib/src/output_parsers/exceptions.dart similarity index 94% rename from packages/langchain/lib/src/model_io/output_parsers/models/models.dart rename to packages/langchain_core/lib/src/output_parsers/exceptions.dart index 34bb6aa2..47429a8a 100644 --- a/packages/langchain/lib/src/model_io/output_parsers/models/models.dart +++ b/packages/langchain_core/lib/src/output_parsers/exceptions.dart @@ -1,4 +1,4 @@ -import '../../../utils/utils.dart'; +import '../exceptions/base.dart'; /// {@template output_parser_exception} /// Exception that output parsers should raise to signify a parsing error. diff --git a/packages/langchain/lib/src/model_io/output_parsers/functions.dart b/packages/langchain_core/lib/src/output_parsers/functions.dart similarity index 97% rename from packages/langchain/lib/src/model_io/output_parsers/functions.dart rename to packages/langchain_core/lib/src/output_parsers/functions.dart index ed62fabe..dd1797d7 100644 --- a/packages/langchain/lib/src/model_io/output_parsers/functions.dart +++ b/packages/langchain_core/lib/src/output_parsers/functions.dart @@ -3,11 +3,11 @@ import 'dart:convert'; import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; -import '../../core/core.dart'; -import '../chat_models/models/models.dart'; -import '../language_models/models/models.dart'; -import 'output_parser.dart'; -import 'utils/json.dart'; +import '../chat_models/types.dart'; +import '../langchain/types.dart'; +import '../language_models/types.dart'; +import 'base.dart'; +import 'utils.dart'; /// {@template base_output_functions_parser} /// Base class for parsers that converts the output of a function call into a diff --git a/packages/langchain_core/lib/src/output_parsers/output_parsers.dart b/packages/langchain_core/lib/src/output_parsers/output_parsers.dart new file mode 100644 index 00000000..55cc0f6f --- /dev/null +++ b/packages/langchain_core/lib/src/output_parsers/output_parsers.dart @@ -0,0 +1,4 @@ +export 'base.dart'; +export 'exceptions.dart'; +export 'functions.dart'; +export 'string.dart'; diff --git a/packages/langchain/lib/src/model_io/output_parsers/string.dart b/packages/langchain_core/lib/src/output_parsers/string.dart similarity index 93% rename from packages/langchain/lib/src/model_io/output_parsers/string.dart rename to packages/langchain_core/lib/src/output_parsers/string.dart index 799176ac..a79108b7 100644 --- a/packages/langchain/lib/src/model_io/output_parsers/string.dart +++ b/packages/langchain_core/lib/src/output_parsers/string.dart @@ -1,5 +1,5 @@ -import '../../core/core.dart'; -import 'output_parser.dart'; +import '../langchain/types.dart'; +import 'base.dart'; /// {@template string_output_parser} /// Output parser that parses the first generation as String. diff --git a/packages/langchain/lib/src/model_io/output_parsers/utils/json.dart b/packages/langchain_core/lib/src/output_parsers/utils.dart similarity index 100% rename from packages/langchain/lib/src/model_io/output_parsers/utils/json.dart rename to packages/langchain_core/lib/src/output_parsers/utils.dart diff --git a/packages/langchain/lib/src/model_io/prompts/base_chat_message_prompt.dart b/packages/langchain_core/lib/src/prompts/base_chat_message_prompt.dart similarity index 98% rename from packages/langchain/lib/src/model_io/prompts/base_chat_message_prompt.dart rename to packages/langchain_core/lib/src/prompts/base_chat_message_prompt.dart index 2ef5d373..7d9b4d38 100644 --- a/packages/langchain/lib/src/model_io/prompts/base_chat_message_prompt.dart +++ b/packages/langchain_core/lib/src/prompts/base_chat_message_prompt.dart @@ -1,11 +1,12 @@ import 'package:meta/meta.dart'; -import '../../core/core.dart'; -import '../chat_models/models/models.dart'; +import '../chat_models/types.dart'; +import '../langchain/types.dart'; +import '../runnables/runnable.dart'; import 'base_prompt.dart'; import 'chat_prompt.dart'; -import 'models/models.dart'; import 'prompt.dart'; +import 'types.dart'; /// {@template chat_message_prompt_template} /// Base class for all message templates in a [ChatPromptTemplate]. diff --git a/packages/langchain/lib/src/model_io/prompts/base_chat_prompt.dart b/packages/langchain_core/lib/src/prompts/base_chat_prompt.dart similarity index 93% rename from packages/langchain/lib/src/model_io/prompts/base_chat_prompt.dart rename to packages/langchain_core/lib/src/prompts/base_chat_prompt.dart index 0b7fcb7a..945550fb 100644 --- a/packages/langchain/lib/src/model_io/prompts/base_chat_prompt.dart +++ b/packages/langchain_core/lib/src/prompts/base_chat_prompt.dart @@ -1,8 +1,8 @@ import 'package:meta/meta.dart'; -import '../chat_models/models/models.dart'; +import '../chat_models/types.dart'; import 'base_prompt.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template base_chat_prompt_template} /// Base class for chat prompt templates. diff --git a/packages/langchain/lib/src/model_io/prompts/base_prompt.dart b/packages/langchain_core/lib/src/prompts/base_prompt.dart similarity index 98% rename from packages/langchain/lib/src/model_io/prompts/base_prompt.dart rename to packages/langchain_core/lib/src/prompts/base_prompt.dart index c45eedc1..3eff161b 100644 --- a/packages/langchain/lib/src/model_io/prompts/base_prompt.dart +++ b/packages/langchain_core/lib/src/prompts/base_prompt.dart @@ -1,9 +1,10 @@ import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; -import '../../core/core.dart'; -import 'models/models.dart'; +import '../langchain/types.dart'; +import '../runnables/runnable.dart'; import 'template.dart'; +import 'types.dart'; /// {@template base_prompt_template} /// Base class for prompt templates. diff --git a/packages/langchain/lib/src/model_io/prompts/chat_prompt.dart b/packages/langchain_core/lib/src/prompts/chat_prompt.dart similarity index 99% rename from packages/langchain/lib/src/model_io/prompts/chat_prompt.dart rename to packages/langchain_core/lib/src/prompts/chat_prompt.dart index 46eb4827..be7cf98a 100644 --- a/packages/langchain/lib/src/model_io/prompts/chat_prompt.dart +++ b/packages/langchain_core/lib/src/prompts/chat_prompt.dart @@ -6,9 +6,9 @@ import '../chat_models/chat_models.dart'; import 'base_chat_message_prompt.dart'; import 'base_chat_prompt.dart'; import 'base_prompt.dart'; -import 'models/models.dart'; import 'prompt.dart'; import 'template.dart'; +import 'types.dart'; /// {@template chat_prompt_template} /// A prompt template for chat models. diff --git a/packages/langchain/lib/src/model_io/prompts/pipeline.dart b/packages/langchain_core/lib/src/prompts/pipeline.dart similarity index 99% rename from packages/langchain/lib/src/model_io/prompts/pipeline.dart rename to packages/langchain_core/lib/src/prompts/pipeline.dart index 6a9de15f..6244fc9c 100644 --- a/packages/langchain/lib/src/model_io/prompts/pipeline.dart +++ b/packages/langchain_core/lib/src/prompts/pipeline.dart @@ -1,7 +1,7 @@ import 'base_prompt.dart'; import 'chat_prompt.dart'; -import 'models/models.dart'; import 'prompt.dart'; +import 'types.dart'; /// {@template pipeline_prompt_template} /// A prompt template for composing multiple prompts together. diff --git a/packages/langchain/lib/src/model_io/prompts/prompt.dart b/packages/langchain_core/lib/src/prompts/prompt.dart similarity index 99% rename from packages/langchain/lib/src/model_io/prompts/prompt.dart rename to packages/langchain_core/lib/src/prompts/prompt.dart index 89a0e380..8c7ee292 100644 --- a/packages/langchain/lib/src/model_io/prompts/prompt.dart +++ b/packages/langchain_core/lib/src/prompts/prompt.dart @@ -3,8 +3,8 @@ import 'package:cross_file/cross_file.dart'; import 'package:meta/meta.dart'; import 'base_prompt.dart'; -import 'models/models.dart'; import 'template.dart'; +import 'types.dart'; /// {@template prompt_template} /// A prompt template for a language model. diff --git a/packages/langchain/lib/src/model_io/prompts/prompt_selector.dart b/packages/langchain_core/lib/src/prompts/prompt_selector.dart similarity index 100% rename from packages/langchain/lib/src/model_io/prompts/prompt_selector.dart rename to packages/langchain_core/lib/src/prompts/prompt_selector.dart diff --git a/packages/langchain/lib/src/model_io/prompts/prompts.dart b/packages/langchain_core/lib/src/prompts/prompts.dart similarity index 89% rename from packages/langchain/lib/src/model_io/prompts/prompts.dart rename to packages/langchain_core/lib/src/prompts/prompts.dart index f25cecd7..cbefe05a 100644 --- a/packages/langchain/lib/src/model_io/prompts/prompts.dart +++ b/packages/langchain_core/lib/src/prompts/prompts.dart @@ -2,8 +2,8 @@ export 'base_chat_message_prompt.dart'; export 'base_chat_prompt.dart'; export 'base_prompt.dart'; export 'chat_prompt.dart'; -export 'models/models.dart'; export 'pipeline.dart'; export 'prompt.dart'; export 'prompt_selector.dart'; export 'template.dart' show TemplateValidationException; +export 'types.dart'; diff --git a/packages/langchain/lib/src/model_io/prompts/template.dart b/packages/langchain_core/lib/src/prompts/template.dart similarity index 99% rename from packages/langchain/lib/src/model_io/prompts/template.dart rename to packages/langchain_core/lib/src/prompts/template.dart index f1b4a9a4..af2169e4 100644 --- a/packages/langchain/lib/src/model_io/prompts/template.dart +++ b/packages/langchain_core/lib/src/prompts/template.dart @@ -1,10 +1,10 @@ import 'package:meta/meta.dart'; -import '../../utils/exception.dart'; +import '../exceptions/base.dart'; import 'base_chat_message_prompt.dart'; import 'chat_prompt.dart'; -import 'models/models.dart'; import 'prompt.dart'; +import 'types.dart'; /// Checks if the template is a valid [PromptTemplate]. /// diff --git a/packages/langchain/lib/src/model_io/prompts/models/models.dart b/packages/langchain_core/lib/src/prompts/types.dart similarity index 96% rename from packages/langchain/lib/src/model_io/prompts/models/models.dart rename to packages/langchain_core/lib/src/prompts/types.dart index e81044e2..ca4a8111 100644 --- a/packages/langchain/lib/src/model_io/prompts/models/models.dart +++ b/packages/langchain_core/lib/src/prompts/types.dart @@ -1,9 +1,9 @@ import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; -import '../../../utils/exception.dart'; -import '../../chat_models/models/models.dart'; -import '../../chat_models/utils.dart'; +import '../chat_models/types.dart'; +import '../chat_models/utils.dart'; +import '../exceptions/base.dart'; /// {@template prompt_value} /// Represents the input to an LLM or Chat model. diff --git a/packages/langchain/lib/src/documents/retrievers/base.dart b/packages/langchain_core/lib/src/retrievers/base.dart similarity index 89% rename from packages/langchain/lib/src/documents/retrievers/base.dart rename to packages/langchain_core/lib/src/retrievers/base.dart index 4580fac4..f50e0001 100644 --- a/packages/langchain/lib/src/documents/retrievers/base.dart +++ b/packages/langchain_core/lib/src/retrievers/base.dart @@ -1,6 +1,6 @@ -import '../../core/core.dart'; -import '../models/models.dart'; -import 'models/models.dart'; +import '../documents/document.dart'; +import '../runnables/runnable.dart'; +import 'types.dart'; /// {@template base_retriever} /// Base Index class. All indexes should extend this class. diff --git a/packages/langchain/lib/src/documents/retrievers/fake.dart b/packages/langchain_core/lib/src/retrievers/fake.dart similarity index 89% rename from packages/langchain/lib/src/documents/retrievers/fake.dart rename to packages/langchain_core/lib/src/retrievers/fake.dart index dd3b33e3..c5e5e262 100644 --- a/packages/langchain/lib/src/documents/retrievers/fake.dart +++ b/packages/langchain_core/lib/src/retrievers/fake.dart @@ -1,6 +1,6 @@ -import '../models/models.dart'; +import '../documents/document.dart'; import 'base.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template fake_retriever} /// A retriever that returns a fixed list of documents. diff --git a/packages/langchain/lib/src/documents/retrievers/retrievers.dart b/packages/langchain_core/lib/src/retrievers/retrievers.dart similarity index 70% rename from packages/langchain/lib/src/documents/retrievers/retrievers.dart rename to packages/langchain_core/lib/src/retrievers/retrievers.dart index 5e069ae1..1be2fb63 100644 --- a/packages/langchain/lib/src/documents/retrievers/retrievers.dart +++ b/packages/langchain_core/lib/src/retrievers/retrievers.dart @@ -1,4 +1,4 @@ export 'base.dart'; export 'fake.dart'; -export 'models/models.dart'; +export 'types.dart'; export 'vector_store.dart'; diff --git a/packages/langchain/lib/src/documents/retrievers/models/models.dart b/packages/langchain_core/lib/src/retrievers/types.dart similarity index 87% rename from packages/langchain/lib/src/documents/retrievers/models/models.dart rename to packages/langchain_core/lib/src/retrievers/types.dart index 74724cde..4ed82147 100644 --- a/packages/langchain/lib/src/documents/retrievers/models/models.dart +++ b/packages/langchain_core/lib/src/retrievers/types.dart @@ -1,8 +1,7 @@ import 'package:meta/meta.dart'; -import '../../../core/base.dart'; -import '../../vector_stores/models/models.dart'; -import '../retrievers.dart'; +import '../langchain/types.dart'; +import '../vector_stores/types.dart'; /// {@template retriever_options} /// Base class for [Retriever] options. diff --git a/packages/langchain/lib/src/documents/retrievers/vector_store.dart b/packages/langchain_core/lib/src/retrievers/vector_store.dart similarity index 88% rename from packages/langchain/lib/src/documents/retrievers/vector_store.dart rename to packages/langchain_core/lib/src/retrievers/vector_store.dart index f0f167e1..4ca18c41 100644 --- a/packages/langchain/lib/src/documents/retrievers/vector_store.dart +++ b/packages/langchain_core/lib/src/retrievers/vector_store.dart @@ -1,7 +1,7 @@ -import '../models/models.dart'; -import '../vector_stores/vector_stores.dart'; +import '../documents/document.dart'; +import '../vector_stores/base.dart'; import 'base.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template vector_store_retriever} /// A retriever that uses a vector store to retrieve documents. diff --git a/packages/langchain/lib/src/core/runnable/binding.dart b/packages/langchain_core/lib/src/runnables/binding.dart similarity index 97% rename from packages/langchain/lib/src/core/runnable/binding.dart rename to packages/langchain_core/lib/src/runnables/binding.dart index 89bdc0b5..4634f27f 100644 --- a/packages/langchain/lib/src/core/runnable/binding.dart +++ b/packages/langchain_core/lib/src/runnables/binding.dart @@ -1,5 +1,5 @@ -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_binding} /// A [RunnableBinding] allows you to run a [Runnable] object with diff --git a/packages/langchain/lib/src/core/runnable/function.dart b/packages/langchain_core/lib/src/runnables/function.dart similarity index 97% rename from packages/langchain/lib/src/core/runnable/function.dart rename to packages/langchain_core/lib/src/runnables/function.dart index c7950523..5d40cc8b 100644 --- a/packages/langchain/lib/src/core/runnable/function.dart +++ b/packages/langchain_core/lib/src/runnables/function.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_function} /// A [RunnableFunction] allows you to run a Dart function as part of a chain. diff --git a/packages/langchain/lib/src/core/runnable/input_getter.dart b/packages/langchain_core/lib/src/runnables/input_getter.dart similarity index 98% rename from packages/langchain/lib/src/core/runnable/input_getter.dart rename to packages/langchain_core/lib/src/runnables/input_getter.dart index 5329e2c2..5b28c6d8 100644 --- a/packages/langchain/lib/src/core/runnable/input_getter.dart +++ b/packages/langchain_core/lib/src/runnables/input_getter.dart @@ -1,5 +1,5 @@ -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_item_from_map} /// A [RunnableItemFromMap] allows you to get a value from the input. diff --git a/packages/langchain/lib/src/core/runnable/input_map.dart b/packages/langchain_core/lib/src/runnables/input_map.dart similarity index 96% rename from packages/langchain/lib/src/core/runnable/input_map.dart rename to packages/langchain_core/lib/src/runnables/input_map.dart index e38fe2f3..405e56c8 100644 --- a/packages/langchain/lib/src/core/runnable/input_map.dart +++ b/packages/langchain_core/lib/src/runnables/input_map.dart @@ -1,5 +1,5 @@ -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_map_input} /// A [RunnableMapInput] allows you to map the input to a different value. diff --git a/packages/langchain/lib/src/core/runnable/map.dart b/packages/langchain_core/lib/src/runnables/map.dart similarity index 97% rename from packages/langchain/lib/src/core/runnable/map.dart rename to packages/langchain_core/lib/src/runnables/map.dart index 6e56b21a..3a479d93 100644 --- a/packages/langchain/lib/src/core/runnable/map.dart +++ b/packages/langchain_core/lib/src/runnables/map.dart @@ -1,7 +1,7 @@ import 'package:async/async.dart' show StreamGroup; -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_map} /// A [RunnableMap] allows you to run multiple [Runnable] objects in parallel diff --git a/packages/langchain/lib/src/core/runnable/passthrough.dart b/packages/langchain_core/lib/src/runnables/passthrough.dart similarity index 96% rename from packages/langchain/lib/src/core/runnable/passthrough.dart rename to packages/langchain_core/lib/src/runnables/passthrough.dart index fd17c1a9..e7541198 100644 --- a/packages/langchain/lib/src/core/runnable/passthrough.dart +++ b/packages/langchain_core/lib/src/runnables/passthrough.dart @@ -1,5 +1,5 @@ -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_passthrough} /// A [RunnablePassthrough] takes the input it receives and passes it through diff --git a/packages/langchain/lib/src/core/runnable/base.dart b/packages/langchain_core/lib/src/runnables/runnable.dart similarity index 99% rename from packages/langchain/lib/src/core/runnable/base.dart rename to packages/langchain_core/lib/src/runnables/runnable.dart index b57447fd..aa6155a6 100644 --- a/packages/langchain/lib/src/core/runnable/base.dart +++ b/packages/langchain_core/lib/src/runnables/runnable.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:meta/meta.dart'; -import '../base.dart'; +import '../langchain/types.dart'; import 'binding.dart'; import 'function.dart'; import 'input_getter.dart'; diff --git a/packages/langchain/lib/src/core/runnable/extensions.dart b/packages/langchain_core/lib/src/runnables/runnable_ext.dart similarity index 94% rename from packages/langchain/lib/src/core/runnable/extensions.dart rename to packages/langchain_core/lib/src/runnables/runnable_ext.dart index 90eaec09..1320f64e 100644 --- a/packages/langchain/lib/src/core/runnable/extensions.dart +++ b/packages/langchain_core/lib/src/runnables/runnable_ext.dart @@ -1,5 +1,5 @@ -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; import 'sequence.dart'; /// Extension methods for [Runnable]s. diff --git a/packages/langchain/lib/src/core/runnable/runnable.dart b/packages/langchain_core/lib/src/runnables/runnables.dart similarity index 66% rename from packages/langchain/lib/src/core/runnable/runnable.dart rename to packages/langchain_core/lib/src/runnables/runnables.dart index 192d08c2..6a538149 100644 --- a/packages/langchain/lib/src/core/runnable/runnable.dart +++ b/packages/langchain_core/lib/src/runnables/runnables.dart @@ -1,8 +1,9 @@ -export 'base.dart'; -export 'extensions.dart'; +export 'binding.dart'; export 'function.dart'; export 'input_getter.dart'; export 'input_map.dart'; export 'map.dart'; export 'passthrough.dart'; +export 'runnable.dart'; +export 'runnable_ext.dart'; export 'sequence.dart'; diff --git a/packages/langchain/lib/src/core/runnable/sequence.dart b/packages/langchain_core/lib/src/runnables/sequence.dart similarity index 98% rename from packages/langchain/lib/src/core/runnable/sequence.dart rename to packages/langchain_core/lib/src/runnables/sequence.dart index e453600e..86aced59 100644 --- a/packages/langchain/lib/src/core/runnable/sequence.dart +++ b/packages/langchain_core/lib/src/runnables/sequence.dart @@ -1,6 +1,5 @@ -import '../../chains/sequential.dart'; -import '../base.dart'; -import 'base.dart'; +import '../langchain/types.dart'; +import 'runnable.dart'; /// {@template runnable_sequence} /// A [RunnableSequence] allows you to run multiple [Runnable] objects diff --git a/packages/langchain/lib/src/storage/base.dart b/packages/langchain_core/lib/src/stores/base.dart similarity index 100% rename from packages/langchain/lib/src/storage/base.dart rename to packages/langchain_core/lib/src/stores/base.dart diff --git a/packages/langchain_core/lib/src/stores/stores.dart b/packages/langchain_core/lib/src/stores/stores.dart new file mode 100644 index 00000000..cb608059 --- /dev/null +++ b/packages/langchain_core/lib/src/stores/stores.dart @@ -0,0 +1 @@ +export 'base.dart'; diff --git a/packages/langchain/lib/src/agents/tools/base.dart b/packages/langchain_core/lib/src/tools/base.dart similarity index 98% rename from packages/langchain/lib/src/agents/tools/base.dart rename to packages/langchain_core/lib/src/tools/base.dart index 5c20bd9a..3ce4d38f 100644 --- a/packages/langchain/lib/src/agents/tools/base.dart +++ b/packages/langchain_core/lib/src/tools/base.dart @@ -3,9 +3,9 @@ import 'dart:async'; import 'package:meta/meta.dart'; -import '../../core/core.dart'; -import '../../model_io/chat_models/models/models.dart'; -import 'models/models.dart'; +import '../chat_models/types.dart'; +import '../langchain/base.dart'; +import 'types.dart'; /// {@template base_tool} /// Base class LangChain tools must extend. diff --git a/packages/langchain_core/lib/src/tools/fake.dart b/packages/langchain_core/lib/src/tools/fake.dart new file mode 100644 index 00000000..bd7b9b09 --- /dev/null +++ b/packages/langchain_core/lib/src/tools/fake.dart @@ -0,0 +1,29 @@ +import 'dart:async'; + +import '../../tools.dart'; + +/// {@template fake_tool} +/// Fake tool for testing. +/// It just returns the input string as is. +/// {@endtemplate} +final class FakeTool extends Tool { + /// {@macro fake_tool} + FakeTool() + : super( + name: 'take', + description: 'Returns the input string as is.', + inputDescription: 'A string', + ); + + @override + FutureOr runInternalString( + final String toolInput, { + final ToolOptions? options, + }) { + try { + return toolInput; + } catch (e) { + return "I don't know how to do that."; + } + } +} diff --git a/packages/langchain/lib/src/model_io/chat_models/chat_models.dart b/packages/langchain_core/lib/src/tools/tools.dart similarity index 57% rename from packages/langchain/lib/src/model_io/chat_models/chat_models.dart rename to packages/langchain_core/lib/src/tools/tools.dart index 9eaecc75..10eeb1d8 100644 --- a/packages/langchain/lib/src/model_io/chat_models/chat_models.dart +++ b/packages/langchain_core/lib/src/tools/tools.dart @@ -1,3 +1,3 @@ export 'base.dart'; export 'fake.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain/lib/src/agents/tools/models/models.dart b/packages/langchain_core/lib/src/tools/types.dart similarity index 85% rename from packages/langchain/lib/src/agents/tools/models/models.dart rename to packages/langchain_core/lib/src/tools/types.dart index 0337120d..8ce62256 100644 --- a/packages/langchain/lib/src/agents/tools/models/models.dart +++ b/packages/langchain_core/lib/src/tools/types.dart @@ -1,6 +1,5 @@ -import '../../../model_io/language_models/models/models.dart'; -import '../../../utils/exception.dart'; -import '../base.dart'; +import '../exceptions/base.dart'; +import '../language_models/types.dart'; /// {@template tool_options} /// Generation options to pass into the Tool. diff --git a/packages/langchain/lib/src/utils/chunk.dart b/packages/langchain_core/lib/src/utils/chunk.dart similarity index 100% rename from packages/langchain/lib/src/utils/chunk.dart rename to packages/langchain_core/lib/src/utils/chunk.dart diff --git a/packages/langchain_core/lib/src/utils/utils.dart b/packages/langchain_core/lib/src/utils/utils.dart new file mode 100644 index 00000000..ef5c89f1 --- /dev/null +++ b/packages/langchain_core/lib/src/utils/utils.dart @@ -0,0 +1 @@ +export 'chunk.dart'; diff --git a/packages/langchain/lib/src/documents/vector_stores/base.dart b/packages/langchain_core/lib/src/vector_stores/base.dart similarity index 98% rename from packages/langchain/lib/src/documents/vector_stores/base.dart rename to packages/langchain_core/lib/src/vector_stores/base.dart index ff15fa99..9ef54df3 100644 --- a/packages/langchain/lib/src/documents/vector_stores/base.dart +++ b/packages/langchain_core/lib/src/vector_stores/base.dart @@ -1,9 +1,9 @@ // ignore_for_file: avoid_unused_constructor_parameters +import '../documents/document.dart'; import '../embeddings/base.dart'; -import '../models/models.dart'; -import '../retrievers/models/models.dart'; +import '../retrievers/types.dart'; import '../retrievers/vector_store.dart'; -import 'models/models.dart'; +import 'types.dart'; /// {@template vector_store} /// Interface for vector stores. diff --git a/packages/langchain/lib/src/documents/vector_stores/models/models.dart b/packages/langchain_core/lib/src/vector_stores/types.dart similarity index 100% rename from packages/langchain/lib/src/documents/vector_stores/models/models.dart rename to packages/langchain_core/lib/src/vector_stores/types.dart diff --git a/packages/langchain_core/lib/src/vector_stores/vector_stores.dart b/packages/langchain_core/lib/src/vector_stores/vector_stores.dart new file mode 100644 index 00000000..669a12e8 --- /dev/null +++ b/packages/langchain_core/lib/src/vector_stores/vector_stores.dart @@ -0,0 +1,2 @@ +export 'base.dart'; +export 'types.dart'; diff --git a/packages/langchain_core/lib/stores.dart b/packages/langchain_core/lib/stores.dart new file mode 100644 index 00000000..2a234153 --- /dev/null +++ b/packages/langchain_core/lib/stores.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to stores. +library stores; + +export 'src/stores/stores.dart'; diff --git a/packages/langchain_core/lib/tools.dart b/packages/langchain_core/lib/tools.dart new file mode 100644 index 00000000..9d0b95aa --- /dev/null +++ b/packages/langchain_core/lib/tools.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to tools. +library tools; + +export 'src/tools/tools.dart'; diff --git a/packages/langchain_core/lib/utils.dart b/packages/langchain_core/lib/utils.dart new file mode 100644 index 00000000..cdcc6670 --- /dev/null +++ b/packages/langchain_core/lib/utils.dart @@ -0,0 +1,4 @@ +/// Contains core utilities. +library utils; + +export 'src/utils/utils.dart'; diff --git a/packages/langchain_core/lib/vector_stores.dart b/packages/langchain_core/lib/vector_stores.dart new file mode 100644 index 00000000..35174345 --- /dev/null +++ b/packages/langchain_core/lib/vector_stores.dart @@ -0,0 +1,4 @@ +/// Contains core abstractions related to vector stores. +library vector_stores; + +export 'src/vector_stores/vector_stores.dart'; diff --git a/packages/langchain_core/pubspec.yaml b/packages/langchain_core/pubspec.yaml index 74e71c62..e9af8a3a 100644 --- a/packages/langchain_core/pubspec.yaml +++ b/packages/langchain_core/pubspec.yaml @@ -16,6 +16,9 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: + async: ^2.11.0 + collection: '>=1.17.0 <1.19.0' + cross_file: ^0.3.3+4 meta: ^1.9.1 dev_dependencies: diff --git a/packages/langchain/test/chains/llm_chain_test.dart b/packages/langchain_core/test/chains/llm_chain_test.dart similarity index 95% rename from packages/langchain/test/chains/llm_chain_test.dart rename to packages/langchain_core/test/chains/llm_chain_test.dart index 7d099850..5b6ea531 100644 --- a/packages/langchain/test/chains/llm_chain_test.dart +++ b/packages/langchain_core/test/chains/llm_chain_test.dart @@ -1,4 +1,7 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/model_io/chat_models/fake_test.dart b/packages/langchain_core/test/chat_models/fake_test.dart similarity index 84% rename from packages/langchain/test/model_io/chat_models/fake_test.dart rename to packages/langchain_core/test/chat_models/fake_test.dart index 8074d972..2600194f 100644 --- a/packages/langchain/test/model_io/chat_models/fake_test.dart +++ b/packages/langchain_core/test/chat_models/fake_test.dart @@ -1,4 +1,5 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/documents/embeddings/fake.dart b/packages/langchain_core/test/embeddings/fake.dart similarity index 96% rename from packages/langchain/test/documents/embeddings/fake.dart rename to packages/langchain_core/test/embeddings/fake.dart index 2d4592e2..1916d8e2 100644 --- a/packages/langchain/test/documents/embeddings/fake.dart +++ b/packages/langchain_core/test/embeddings/fake.dart @@ -1,4 +1,5 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; import 'package:test/test.dart'; void main() async { diff --git a/packages/langchain/test/model_io/output_parsers/functions_test.dart b/packages/langchain_core/test/output_parsers/functions_test.dart similarity index 96% rename from packages/langchain/test/model_io/output_parsers/functions_test.dart rename to packages/langchain_core/test/output_parsers/functions_test.dart index 64641896..cfe1c72d 100644 --- a/packages/langchain/test/model_io/output_parsers/functions_test.dart +++ b/packages/langchain_core/test/output_parsers/functions_test.dart @@ -1,6 +1,7 @@ import 'dart:convert'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/model_io/output_parsers/string_test.dart b/packages/langchain_core/test/output_parsers/string_test.dart similarity index 83% rename from packages/langchain/test/model_io/output_parsers/string_test.dart rename to packages/langchain_core/test/output_parsers/string_test.dart index f819ae89..210ae8fc 100644 --- a/packages/langchain/test/model_io/output_parsers/string_test.dart +++ b/packages/langchain_core/test/output_parsers/string_test.dart @@ -1,5 +1,7 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/output_parsers.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/model_io/output_parsers/utils/json_test.dart b/packages/langchain_core/test/output_parsers/utils_test.dart similarity index 94% rename from packages/langchain/test/model_io/output_parsers/utils/json_test.dart rename to packages/langchain_core/test/output_parsers/utils_test.dart index 398241e6..714bc0ea 100644 --- a/packages/langchain/test/model_io/output_parsers/utils/json_test.dart +++ b/packages/langchain_core/test/output_parsers/utils_test.dart @@ -1,4 +1,4 @@ -import 'package:langchain/src/model_io/output_parsers/utils/json.dart'; +import 'package:langchain_core/src/output_parsers/utils.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/model_io/prompts/assets/prompt_file.txt b/packages/langchain_core/test/prompts/assets/prompt_file.txt similarity index 100% rename from packages/langchain/test/model_io/prompts/assets/prompt_file.txt rename to packages/langchain_core/test/prompts/assets/prompt_file.txt diff --git a/packages/langchain/test/model_io/prompts/chat_prompt_test.dart b/packages/langchain_core/test/prompts/chat_prompt_test.dart similarity index 98% rename from packages/langchain/test/model_io/prompts/chat_prompt_test.dart rename to packages/langchain_core/test/prompts/chat_prompt_test.dart index 5df6a936..5c0067fe 100644 --- a/packages/langchain/test/model_io/prompts/chat_prompt_test.dart +++ b/packages/langchain_core/test/prompts/chat_prompt_test.dart @@ -1,6 +1,6 @@ // ignore_for_file: avoid_redundant_argument_values -import 'package:langchain/src/model_io/chat_models/chat_models.dart'; -import 'package:langchain/src/model_io/prompts/prompts.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:test/test.dart'; void main() { @@ -216,7 +216,7 @@ void main() { }); test('Load chat prompt template from file', () async { - const templateFile = './test/model_io/prompts/assets/prompt_file.txt'; + const templateFile = './test/prompts/assets/prompt_file.txt'; final expected = CustomChatMessagePromptTemplate.fromTemplate( 'Question: {question}\nAnswer:', role: 'human', diff --git a/packages/langchain/test/model_io/prompts/pipeline_test.dart b/packages/langchain_core/test/prompts/pipeline_test.dart similarity index 97% rename from packages/langchain/test/model_io/prompts/pipeline_test.dart rename to packages/langchain_core/test/prompts/pipeline_test.dart index 358e2680..331c2c00 100644 --- a/packages/langchain/test/model_io/prompts/pipeline_test.dart +++ b/packages/langchain_core/test/prompts/pipeline_test.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/model_io/prompts/prompt_test.dart b/packages/langchain_core/test/prompts/prompt_test.dart similarity index 98% rename from packages/langchain/test/model_io/prompts/prompt_test.dart rename to packages/langchain_core/test/prompts/prompt_test.dart index 80688853..86ed49f7 100644 --- a/packages/langchain/test/model_io/prompts/prompt_test.dart +++ b/packages/langchain_core/test/prompts/prompt_test.dart @@ -1,5 +1,5 @@ // ignore_for_file: avoid_redundant_argument_values -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:test/test.dart'; void main() { @@ -154,7 +154,7 @@ Answer:'''; }); test('Test prompt can be successfully constructed from a file', () async { - const templateFile = './test/model_io/prompts/assets/prompt_file.txt'; + const templateFile = './test/prompts/assets/prompt_file.txt'; const inputVariables = ['question']; final prompt = await PromptTemplate.fromFile(templateFile); expect(prompt.template, 'Question: {question}\nAnswer:'); diff --git a/packages/langchain/test/model_io/prompts/template_test.dart b/packages/langchain_core/test/prompts/template_test.dart similarity index 92% rename from packages/langchain/test/model_io/prompts/template_test.dart rename to packages/langchain_core/test/prompts/template_test.dart index 549f0a96..d38b1d39 100644 --- a/packages/langchain/test/model_io/prompts/template_test.dart +++ b/packages/langchain_core/test/prompts/template_test.dart @@ -1,5 +1,5 @@ -import 'package:langchain/langchain.dart'; -import 'package:langchain/src/model_io/prompts/template.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/src/prompts/template.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/binding_test.dart b/packages/langchain_core/test/runnables/binding_test.dart similarity index 93% rename from packages/langchain/test/core/runnable/binding_test.dart rename to packages/langchain_core/test/runnables/binding_test.dart index b1bd4373..edd530cc 100644 --- a/packages/langchain/test/core/runnable/binding_test.dart +++ b/packages/langchain_core/test/runnables/binding_test.dart @@ -1,5 +1,8 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/function_test.dart b/packages/langchain_core/test/runnables/function_test.dart similarity index 84% rename from packages/langchain/test/core/runnable/function_test.dart rename to packages/langchain_core/test/runnables/function_test.dart index e1b3c9c4..8cf3f60f 100644 --- a/packages/langchain/test/core/runnable/function_test.dart +++ b/packages/langchain_core/test/runnables/function_test.dart @@ -1,5 +1,8 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/input_getter_test.dart b/packages/langchain_core/test/runnables/input_getter_test.dart similarity index 96% rename from packages/langchain/test/core/runnable/input_getter_test.dart rename to packages/langchain_core/test/runnables/input_getter_test.dart index f7cb1ba2..5e4099e5 100644 --- a/packages/langchain/test/core/runnable/input_getter_test.dart +++ b/packages/langchain_core/test/runnables/input_getter_test.dart @@ -1,5 +1,5 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/input_map_test.dart b/packages/langchain_core/test/runnables/input_map_test.dart similarity index 76% rename from packages/langchain/test/core/runnable/input_map_test.dart rename to packages/langchain_core/test/runnables/input_map_test.dart index d48b0e01..139e9fbc 100644 --- a/packages/langchain/test/core/runnable/input_map_test.dart +++ b/packages/langchain_core/test/runnables/input_map_test.dart @@ -1,10 +1,11 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { group('RunnableMapInput tests', () { test('RunnableMapInput from Runnable.getItemFromMap', () async { - final chain = Runnable.mapInput( + final chain = + Runnable.mapInput, Map>( (final input) => { 'input': '${input['foo']}${input['bar']}', }, @@ -15,7 +16,8 @@ void main() { }); test('Streaming RunnableMapInput', () async { - final chain = Runnable.mapInput( + final chain = + Runnable.mapInput, Map>( (final input) => { 'input': '${input['foo']}${input['bar']}', }, diff --git a/packages/langchain/test/core/runnable/invoke_test.dart b/packages/langchain_core/test/runnables/invoke_test.dart similarity index 65% rename from packages/langchain/test/core/runnable/invoke_test.dart rename to packages/langchain_core/test/runnables/invoke_test.dart index 2f4625c6..e218b96d 100644 --- a/packages/langchain/test/core/runnable/invoke_test.dart +++ b/packages/langchain_core/test/runnables/invoke_test.dart @@ -1,5 +1,11 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/retrievers.dart'; +import 'package:langchain_core/tools.dart'; import 'package:test/test.dart'; void main() { @@ -40,25 +46,6 @@ void main() { ); }); - test('DocumentTransformer as Runnable', () async { - const run = CharacterTextSplitter( - separator: ' ', - chunkSize: 7, - chunkOverlap: 3, - ); - final res = await run.invoke([ - const Document(pageContent: 'foo bar baz 123'), - ]); - expect( - res, - equals([ - const Document(pageContent: 'foo bar'), - const Document(pageContent: 'bar baz'), - const Document(pageContent: 'baz 123'), - ]), - ); - }); - test('LLM as Runnable', () async { const run = FakeEchoLLM(); final res = await run.invoke(PromptValue.string('Hello world!')); @@ -71,14 +58,6 @@ void main() { expect(res.firstOutputAsString, 'Hello world!'); }); - test('Chain as Runnable', () async { - final model = FakeListLLM(responses: ['Hello world!']); - final prompt = PromptTemplate.fromTemplate('Print {foo}'); - final run = LLMChain(prompt: prompt, llm: model); - final res = await run.invoke({'foo': 'Hello world!'}); - expect(res[LLMChain.defaultOutputKey], 'Hello world!'); - }); - test('OutputParser as Runnable', () async { const run = StringOutputParser(); final res = await run.invoke( @@ -90,9 +69,9 @@ void main() { }); test('Tool as Runnable', () async { - final run = CalculatorTool(); - final res = await run.invoke({'input': '1+1'}); - expect(res, '2.0'); + final run = FakeTool(); + final res = await run.invoke({'input': 'hello'}); + expect(res, 'hello'); }); }); } diff --git a/packages/langchain/test/core/runnable/map_test.dart b/packages/langchain_core/test/runnables/map_test.dart similarity index 87% rename from packages/langchain/test/core/runnable/map_test.dart rename to packages/langchain_core/test/runnables/map_test.dart index 99b6d2cc..1cab3742 100644 --- a/packages/langchain/test/core/runnable/map_test.dart +++ b/packages/langchain_core/test/runnables/map_test.dart @@ -1,6 +1,10 @@ // ignore_for_file: unused_element import 'package:collection/collection.dart'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/passthrough_test.dart b/packages/langchain_core/test/runnables/passthrough_test.dart similarity index 84% rename from packages/langchain/test/core/runnable/passthrough_test.dart rename to packages/langchain_core/test/runnables/passthrough_test.dart index a49dfbb6..44ae2094 100644 --- a/packages/langchain/test/core/runnable/passthrough_test.dart +++ b/packages/langchain_core/test/runnables/passthrough_test.dart @@ -1,5 +1,8 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/sequence_test.dart b/packages/langchain_core/test/runnables/sequence_test.dart similarity index 88% rename from packages/langchain/test/core/runnable/sequence_test.dart rename to packages/langchain_core/test/runnables/sequence_test.dart index 561f8d7c..801491ac 100644 --- a/packages/langchain/test/core/runnable/sequence_test.dart +++ b/packages/langchain_core/test/runnables/sequence_test.dart @@ -1,5 +1,9 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/core/runnable/stream_test.dart b/packages/langchain_core/test/runnables/stream_test.dart similarity index 69% rename from packages/langchain/test/core/runnable/stream_test.dart rename to packages/langchain_core/test/runnables/stream_test.dart index b6c87830..18070823 100644 --- a/packages/langchain/test/core/runnable/stream_test.dart +++ b/packages/langchain_core/test/runnables/stream_test.dart @@ -1,5 +1,11 @@ // ignore_for_file: unused_element -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/retrievers.dart'; +import 'package:langchain_core/tools.dart'; import 'package:test/test.dart'; void main() { @@ -55,31 +61,6 @@ void main() { expect(item, [doc]); }); - test('Streaming DocumentTransformer', () async { - const run = CharacterTextSplitter( - separator: ' ', - chunkSize: 7, - chunkOverlap: 3, - ); - final stream = run.stream([ - const Document(pageContent: 'foo bar baz 123'), - ]); - - final streamList = await stream.toList(); - expect(streamList.length, 1); - expect(streamList.first, isA>()); - - final item = streamList.first; - expect( - item, - [ - const Document(pageContent: 'foo bar'), - const Document(pageContent: 'bar baz'), - const Document(pageContent: 'baz 123'), - ], - ); - }); - test('Streaming LLM', () async { const run = FakeEchoLLM(); final stream = run.stream(PromptValue.string('Hello world!')); @@ -105,20 +86,6 @@ void main() { expect(res, 'Hello world!'); }); - test('Streaming Chain', () async { - final model = FakeListLLM(responses: ['Hello world!']); - final prompt = PromptTemplate.fromTemplate('Print {foo}'); - final run = LLMChain(prompt: prompt, llm: model); - final stream = run.stream({'foo': 'Hello world!'}); - - final streamList = await stream.toList(); - expect(streamList.length, 1); - expect(streamList.first, isA>()); - - final res = streamList.first; - expect(res[LLMChain.defaultOutputKey], 'Hello world!'); - }); - test('Streaming OutputParser', () async { const run = StringOutputParser(); final stream = run.stream( @@ -136,15 +103,15 @@ void main() { }); test('Streaming Tool', () async { - final run = CalculatorTool(); - final stream = run.stream({'input': '1+1'}); + final run = FakeTool(); + final stream = run.stream({'input': 'hello'}); final streamList = await stream.toList(); expect(streamList.length, 1); expect(streamList.first, isA()); final res = streamList.first; - expect(res, '2.0'); + expect(res, 'hello'); }); }); } diff --git a/packages/langchain/test/agents/tools/base_test.dart b/packages/langchain_core/test/tools/base_test.dart similarity index 95% rename from packages/langchain/test/agents/tools/base_test.dart rename to packages/langchain_core/test/tools/base_test.dart index 318f9d01..2131f4a1 100644 --- a/packages/langchain/test/agents/tools/base_test.dart +++ b/packages/langchain_core/test/tools/base_test.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/tools.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain/test/utils/chunk_test.dart b/packages/langchain_core/test/utils/chunk_test.dart similarity index 95% rename from packages/langchain/test/utils/chunk_test.dart rename to packages/langchain_core/test/utils/chunk_test.dart index db78dfe6..7720c2f4 100644 --- a/packages/langchain/test/utils/chunk_test.dart +++ b/packages/langchain_core/test/utils/chunk_test.dart @@ -1,4 +1,4 @@ -import 'package:langchain/src/utils/chunk.dart'; +import 'package:langchain_core/utils.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/langchain_google/example/langchain_google_example.dart b/packages/langchain_google/example/langchain_google_example.dart index c5080a2c..b1079dd2 100644 --- a/packages/langchain_google/example/langchain_google_example.dart +++ b/packages/langchain_google/example/langchain_google_example.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:googleapis_auth/auth_io.dart'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; import 'package:langchain_google/langchain_google.dart'; void main() async { diff --git a/packages/langchain_google/lib/langchain_google.dart b/packages/langchain_google/lib/langchain_google.dart index 1e9cd9ca..371e45ad 100644 --- a/packages/langchain_google/lib/langchain_google.dart +++ b/packages/langchain_google/lib/langchain_google.dart @@ -2,7 +2,6 @@ library; export 'src/chat_models/chat_models.dart'; -export 'src/doc_loaders/doc_loaders.dart'; export 'src/embeddings/embeddings.dart'; export 'src/llms/llms.dart'; export 'src/vector_stores/vector_stores.dart'; diff --git a/packages/langchain_google/lib/src/chat_models/chat_models.dart b/packages/langchain_google/lib/src/chat_models/chat_models.dart index 44f89a68..c24612a3 100644 --- a/packages/langchain_google/lib/src/chat_models/chat_models.dart +++ b/packages/langchain_google/lib/src/chat_models/chat_models.dart @@ -1,4 +1,4 @@ export 'google_ai/chat_google_generative_ai.dart'; -export 'google_ai/models/models.dart'; +export 'google_ai/types.dart'; export 'vertex_ai/chat_vertex_ai.dart'; -export 'vertex_ai/models/models.dart'; +export 'vertex_ai/types.dart'; diff --git a/packages/langchain_google/lib/src/chat_models/google_ai/chat_google_generative_ai.dart b/packages/langchain_google/lib/src/chat_models/google_ai/chat_google_generative_ai.dart index 439c3f55..83a8d91b 100644 --- a/packages/langchain_google/lib/src/chat_models/google_ai/chat_google_generative_ai.dart +++ b/packages/langchain_google/lib/src/chat_models/google_ai/chat_google_generative_ai.dart @@ -1,10 +1,11 @@ import 'package:googleai_dart/googleai_dart.dart'; import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:uuid/uuid.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// Wrapper around [Google AI for Developers](https://ai.google.dev/) API /// (aka Gemini API). diff --git a/packages/langchain_google/lib/src/chat_models/google_ai/models/mappers.dart b/packages/langchain_google/lib/src/chat_models/google_ai/mappers.dart similarity index 97% rename from packages/langchain_google/lib/src/chat_models/google_ai/models/mappers.dart rename to packages/langchain_google/lib/src/chat_models/google_ai/mappers.dart index a7d08176..af37477e 100644 --- a/packages/langchain_google/lib/src/chat_models/google_ai/models/mappers.dart +++ b/packages/langchain_google/lib/src/chat_models/google_ai/mappers.dart @@ -1,8 +1,9 @@ import 'package:collection/collection.dart'; import 'package:googleai_dart/googleai_dart.dart'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; -import 'models.dart'; +import 'types.dart'; const _authorUser = 'user'; const _authorAI = 'model'; diff --git a/packages/langchain_google/lib/src/chat_models/google_ai/models/models.dart b/packages/langchain_google/lib/src/chat_models/google_ai/types.dart similarity index 99% rename from packages/langchain_google/lib/src/chat_models/google_ai/models/models.dart rename to packages/langchain_google/lib/src/chat_models/google_ai/types.dart index 240b2a41..8d7625df 100644 --- a/packages/langchain_google/lib/src/chat_models/google_ai/models/models.dart +++ b/packages/langchain_google/lib/src/chat_models/google_ai/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; /// {@template chat_google_generative_ai_options} /// Options to pass into the Google Generative AI Chat Model. diff --git a/packages/langchain_google/lib/src/chat_models/vertex_ai/chat_vertex_ai.dart b/packages/langchain_google/lib/src/chat_models/vertex_ai/chat_vertex_ai.dart index 766f51ce..f72384c5 100644 --- a/packages/langchain_google/lib/src/chat_models/vertex_ai/chat_vertex_ai.dart +++ b/packages/langchain_google/lib/src/chat_models/vertex_ai/chat_vertex_ai.dart @@ -1,10 +1,11 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:uuid/uuid.dart'; import 'package:vertex_ai/vertex_ai.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// {@template chat_vertex_ai} /// Wrapper around GCP Vertex AI text chat models API (aka PaLM API for chat). diff --git a/packages/langchain_google/lib/src/chat_models/vertex_ai/models/mappers.dart b/packages/langchain_google/lib/src/chat_models/vertex_ai/mappers.dart similarity index 96% rename from packages/langchain_google/lib/src/chat_models/vertex_ai/models/mappers.dart rename to packages/langchain_google/lib/src/chat_models/vertex_ai/mappers.dart index bf2b2946..86fa6854 100644 --- a/packages/langchain_google/lib/src/chat_models/vertex_ai/models/mappers.dart +++ b/packages/langchain_google/lib/src/chat_models/vertex_ai/mappers.dart @@ -1,4 +1,5 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; import 'package:vertex_ai/vertex_ai.dart'; const _authorUser = 'USER'; diff --git a/packages/langchain_google/lib/src/chat_models/vertex_ai/models/models.dart b/packages/langchain_google/lib/src/chat_models/vertex_ai/types.dart similarity index 98% rename from packages/langchain_google/lib/src/chat_models/vertex_ai/models/models.dart rename to packages/langchain_google/lib/src/chat_models/vertex_ai/types.dart index d0165aef..4d18723f 100644 --- a/packages/langchain_google/lib/src/chat_models/vertex_ai/models/models.dart +++ b/packages/langchain_google/lib/src/chat_models/vertex_ai/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; /// {@template chat_vertex_ai_options} /// Options to pass into the Vertex AI Chat Model. diff --git a/packages/langchain_google/lib/src/doc_loaders/doc_loaders.dart b/packages/langchain_google/lib/src/doc_loaders/doc_loaders.dart deleted file mode 100644 index 8b137891..00000000 --- a/packages/langchain_google/lib/src/doc_loaders/doc_loaders.dart +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/langchain_google/lib/src/embeddings/vertex_ai.dart b/packages/langchain_google/lib/src/embeddings/vertex_ai.dart index 964e25ad..ff8d15c2 100644 --- a/packages/langchain_google/lib/src/embeddings/vertex_ai.dart +++ b/packages/langchain_google/lib/src/embeddings/vertex_ai.dart @@ -1,5 +1,7 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; +import 'package:langchain_core/utils.dart'; import 'package:vertex_ai/vertex_ai.dart'; /// {@template vertex_ai_embeddings} diff --git a/packages/langchain_google/lib/src/llms/llms.dart b/packages/langchain_google/lib/src/llms/llms.dart index b7704332..cae65947 100644 --- a/packages/langchain_google/lib/src/llms/llms.dart +++ b/packages/langchain_google/lib/src/llms/llms.dart @@ -1,2 +1,2 @@ -export 'models/models.dart'; -export 'vertex_ai.dart'; +export 'vertex_ai/types.dart'; +export 'vertex_ai/vertex_ai.dart'; diff --git a/packages/langchain_google/lib/src/llms/models/mappers.dart b/packages/langchain_google/lib/src/llms/vertex_ai/mappers.dart similarity index 93% rename from packages/langchain_google/lib/src/llms/models/mappers.dart rename to packages/langchain_google/lib/src/llms/vertex_ai/mappers.dart index 4bdb975a..35962950 100644 --- a/packages/langchain_google/lib/src/llms/models/mappers.dart +++ b/packages/langchain_google/lib/src/llms/vertex_ai/mappers.dart @@ -1,4 +1,5 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/llms.dart'; import 'package:vertex_ai/vertex_ai.dart'; /// Mapper for [VertexAITextModelResponse] to [LLMResult]. diff --git a/packages/langchain_google/lib/src/llms/models/models.dart b/packages/langchain_google/lib/src/llms/vertex_ai/types.dart similarity index 99% rename from packages/langchain_google/lib/src/llms/models/models.dart rename to packages/langchain_google/lib/src/llms/vertex_ai/types.dart index 08d0ca46..1f4fc721 100644 --- a/packages/langchain_google/lib/src/llms/models/models.dart +++ b/packages/langchain_google/lib/src/llms/vertex_ai/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/llms.dart'; /// {@template vertex_ai_options} /// Options to pass into the Vertex AI LLM. diff --git a/packages/langchain_google/lib/src/llms/vertex_ai.dart b/packages/langchain_google/lib/src/llms/vertex_ai/vertex_ai.dart similarity index 98% rename from packages/langchain_google/lib/src/llms/vertex_ai.dart rename to packages/langchain_google/lib/src/llms/vertex_ai/vertex_ai.dart index f7923d73..934e9a94 100644 --- a/packages/langchain_google/lib/src/llms/vertex_ai.dart +++ b/packages/langchain_google/lib/src/llms/vertex_ai/vertex_ai.dart @@ -1,9 +1,10 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:vertex_ai/vertex_ai.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// {@template vertex_ai} /// Wrapper around GCP Vertex AI text models API (aka PaLM API for text). diff --git a/packages/langchain_google/lib/src/vector_stores/models/mappers.dart b/packages/langchain_google/lib/src/vector_stores/mappers.dart similarity index 95% rename from packages/langchain_google/lib/src/vector_stores/models/mappers.dart rename to packages/langchain_google/lib/src/vector_stores/mappers.dart index d003e457..126f8a90 100644 --- a/packages/langchain_google/lib/src/vector_stores/models/mappers.dart +++ b/packages/langchain_google/lib/src/vector_stores/mappers.dart @@ -1,6 +1,6 @@ import 'package:vertex_ai/vertex_ai.dart'; -import 'models.dart'; +import 'types.dart'; /// Mapper for [VertexAIIndexDatapointRestriction]. abstract class VertexAIMatchingEngineFilterMapper { diff --git a/packages/langchain_google/lib/src/vector_stores/matching_engine.dart b/packages/langchain_google/lib/src/vector_stores/matching_engine.dart index 034889c6..751b6d71 100644 --- a/packages/langchain_google/lib/src/vector_stores/matching_engine.dart +++ b/packages/langchain_google/lib/src/vector_stores/matching_engine.dart @@ -2,11 +2,13 @@ import 'dart:convert'; import 'package:gcloud/storage.dart'; import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/exceptions.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:uuid/uuid.dart'; import 'package:vertex_ai/vertex_ai.dart'; -import 'models/models.dart'; +import 'types.dart'; /// A vector store that uses Vertex AI Vector Search /// (former Vertex AI Matching Engine). diff --git a/packages/langchain_google/lib/src/vector_stores/models/models.dart b/packages/langchain_google/lib/src/vector_stores/types.dart similarity index 97% rename from packages/langchain_google/lib/src/vector_stores/models/models.dart rename to packages/langchain_google/lib/src/vector_stores/types.dart index e1c6d0da..0d260f86 100644 --- a/packages/langchain_google/lib/src/vector_stores/models/models.dart +++ b/packages/langchain_google/lib/src/vector_stores/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:meta/meta.dart'; import 'mappers.dart'; diff --git a/packages/langchain_google/lib/src/vector_stores/vector_stores.dart b/packages/langchain_google/lib/src/vector_stores/vector_stores.dart index 48bc44c4..1862dc29 100644 --- a/packages/langchain_google/lib/src/vector_stores/vector_stores.dart +++ b/packages/langchain_google/lib/src/vector_stores/vector_stores.dart @@ -1,2 +1,2 @@ export 'matching_engine.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain_google/pubspec.yaml b/packages/langchain_google/pubspec.yaml index 176de3b3..c7ffea8b 100644 --- a/packages/langchain_google/pubspec.yaml +++ b/packages/langchain_google/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: googleapis: ^12.0.0 googleapis_auth: ^1.4.1 http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 meta: ^1.9.1 uuid: ^4.0.0 vertex_ai: ^0.0.10 diff --git a/packages/langchain_google/pubspec_overrides.yaml b/packages/langchain_google/pubspec_overrides.yaml index 8b464654..b0513992 100644 --- a/packages/langchain_google/pubspec_overrides.yaml +++ b/packages/langchain_google/pubspec_overrides.yaml @@ -1,8 +1,8 @@ -# melos_managed_dependency_overrides: googleai_dart,langchain,vertex_ai +# melos_managed_dependency_overrides: googleai_dart,vertex_ai,langchain_core dependency_overrides: googleai_dart: path: ../googleai_dart - langchain: - path: ../langchain + langchain_core: + path: ../langchain_core vertex_ai: path: ../vertex_ai diff --git a/packages/langchain_google/test/chat_models/chat_google_generative_ai_test.dart b/packages/langchain_google/test/chat_models/chat_google_generative_ai_test.dart index a78f7701..a4a2e63e 100644 --- a/packages/langchain_google/test/chat_models/chat_google_generative_ai_test.dart +++ b/packages/langchain_google/test/chat_models/chat_google_generative_ai_test.dart @@ -5,7 +5,8 @@ library; // Uses dart:io import 'dart:convert'; import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_google/langchain_google.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_google/test/chat_models/chat_vertex_ai_test.dart b/packages/langchain_google/test/chat_models/chat_vertex_ai_test.dart index da7ae69e..92be9d34 100644 --- a/packages/langchain_google/test/chat_models/chat_vertex_ai_test.dart +++ b/packages/langchain_google/test/chat_models/chat_vertex_ai_test.dart @@ -4,7 +4,8 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_google/langchain_google.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_google/test/embeddings/vertex_ai_test.dart b/packages/langchain_google/test/embeddings/vertex_ai_test.dart index 9456533d..ae5a175a 100644 --- a/packages/langchain_google/test/embeddings/vertex_ai_test.dart +++ b/packages/langchain_google/test/embeddings/vertex_ai_test.dart @@ -3,7 +3,7 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_google/langchain_google.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_google/test/llms/vertex_ai_test.dart b/packages/langchain_google/test/llms/vertex_ai_test.dart index 098ae9b9..762224fd 100644 --- a/packages/langchain_google/test/llms/vertex_ai_test.dart +++ b/packages/langchain_google/test/llms/vertex_ai_test.dart @@ -4,7 +4,7 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_google/langchain_google.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_google/test/vector_stores/matching_engine_test.dart b/packages/langchain_google/test/vector_stores/matching_engine_test.dart index f2c49f71..ccc4bbc1 100644 --- a/packages/langchain_google/test/vector_stores/matching_engine_test.dart +++ b/packages/langchain_google/test/vector_stores/matching_engine_test.dart @@ -3,7 +3,8 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:langchain_google/langchain_google.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_huggingface/pubspec.yaml b/packages/langchain_huggingface/pubspec.yaml index 47b82816..576a8f6f 100644 --- a/packages/langchain_huggingface/pubspec.yaml +++ b/packages/langchain_huggingface/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_huggingface/pubspec_overrides.yaml b/packages/langchain_huggingface/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_huggingface/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_microsoft/pubspec.yaml b/packages/langchain_microsoft/pubspec.yaml index 70113dd2..685287b7 100644 --- a/packages/langchain_microsoft/pubspec.yaml +++ b/packages/langchain_microsoft/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_microsoft/pubspec_overrides.yaml b/packages/langchain_microsoft/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_microsoft/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_mistralai/lib/src/chat_models/chat_mistralai.dart b/packages/langchain_mistralai/lib/src/chat_models/chat_mistralai.dart index 02c11bd7..a6fd1f08 100644 --- a/packages/langchain_mistralai/lib/src/chat_models/chat_mistralai.dart +++ b/packages/langchain_mistralai/lib/src/chat_models/chat_mistralai.dart @@ -1,10 +1,11 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_tiktoken/langchain_tiktoken.dart'; import 'package:mistralai_dart/mistralai_dart.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// Wrapper around [Mistral AI](https://docs.mistral.ai) Chat Completions API. /// diff --git a/packages/langchain_mistralai/lib/src/chat_models/chat_models.dart b/packages/langchain_mistralai/lib/src/chat_models/chat_models.dart index 5b68dbe0..9bfcbbc5 100644 --- a/packages/langchain_mistralai/lib/src/chat_models/chat_models.dart +++ b/packages/langchain_mistralai/lib/src/chat_models/chat_models.dart @@ -1,2 +1,2 @@ export 'chat_mistralai.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain_mistralai/lib/src/chat_models/models/mappers.dart b/packages/langchain_mistralai/lib/src/chat_models/mappers.dart similarity index 96% rename from packages/langchain_mistralai/lib/src/chat_models/models/mappers.dart rename to packages/langchain_mistralai/lib/src/chat_models/mappers.dart index 7b412ae0..4220e0e5 100644 --- a/packages/langchain_mistralai/lib/src/chat_models/models/mappers.dart +++ b/packages/langchain_mistralai/lib/src/chat_models/mappers.dart @@ -1,4 +1,5 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; import 'package:mistralai_dart/mistralai_dart.dart'; /// Mapper for a list of [ChatMessage]s. diff --git a/packages/langchain_mistralai/lib/src/chat_models/models/models.dart b/packages/langchain_mistralai/lib/src/chat_models/types.dart similarity index 97% rename from packages/langchain_mistralai/lib/src/chat_models/models/models.dart rename to packages/langchain_mistralai/lib/src/chat_models/types.dart index 4e32b71c..e1d8517e 100644 --- a/packages/langchain_mistralai/lib/src/chat_models/models/models.dart +++ b/packages/langchain_mistralai/lib/src/chat_models/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; /// {@template chat_mistral_ai_options} /// Options to pass into ChatMistralAI. diff --git a/packages/langchain_mistralai/lib/src/embeddings/mistralai_embeddings.dart b/packages/langchain_mistralai/lib/src/embeddings/mistralai_embeddings.dart index 70346276..5f006681 100644 --- a/packages/langchain_mistralai/lib/src/embeddings/mistralai_embeddings.dart +++ b/packages/langchain_mistralai/lib/src/embeddings/mistralai_embeddings.dart @@ -1,5 +1,7 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; +import 'package:langchain_core/utils.dart'; import 'package:mistralai_dart/mistralai_dart.dart'; /// Wrapper around [Mistral AI](https://docs.mistral.ai) Embeddings API. diff --git a/packages/langchain_mistralai/pubspec.yaml b/packages/langchain_mistralai/pubspec.yaml index 633c9d5b..935428f0 100644 --- a/packages/langchain_mistralai/pubspec.yaml +++ b/packages/langchain_mistralai/pubspec.yaml @@ -19,7 +19,7 @@ environment: dependencies: collection: '>=1.17.0 <1.19.0' http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 langchain_tiktoken: ^1.0.1 meta: ^1.9.1 mistralai_dart: ^0.0.3 diff --git a/packages/langchain_mistralai/pubspec_overrides.yaml b/packages/langchain_mistralai/pubspec_overrides.yaml index 79b1c4e4..4a44a89b 100644 --- a/packages/langchain_mistralai/pubspec_overrides.yaml +++ b/packages/langchain_mistralai/pubspec_overrides.yaml @@ -1,6 +1,6 @@ -# melos_managed_dependency_overrides: langchain,mistralai_dart +# melos_managed_dependency_overrides: mistralai_dart,langchain_core dependency_overrides: - langchain: - path: ../langchain + langchain_core: + path: ../langchain_core mistralai_dart: path: ../mistralai_dart diff --git a/packages/langchain_mistralai/test/chat_models/chat_mistralai_test.dart b/packages/langchain_mistralai/test/chat_models/chat_mistralai_test.dart index 96af1f11..1ed41291 100644 --- a/packages/langchain_mistralai/test/chat_models/chat_mistralai_test.dart +++ b/packages/langchain_mistralai/test/chat_models/chat_mistralai_test.dart @@ -3,7 +3,9 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_mistralai/langchain_mistralai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_mistralai/test/embeddings/mistralai_embeddings_test.dart b/packages/langchain_mistralai/test/embeddings/mistralai_embeddings_test.dart index 4a8b5efc..89ea7eb2 100644 --- a/packages/langchain_mistralai/test/embeddings/mistralai_embeddings_test.dart +++ b/packages/langchain_mistralai/test/embeddings/mistralai_embeddings_test.dart @@ -3,7 +3,7 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_mistralai/langchain_mistralai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_ollama/lib/src/chat_models/chat_models.dart b/packages/langchain_ollama/lib/src/chat_models/chat_models.dart index 48ad8aeb..731f4e59 100644 --- a/packages/langchain_ollama/lib/src/chat_models/chat_models.dart +++ b/packages/langchain_ollama/lib/src/chat_models/chat_models.dart @@ -1,2 +1,2 @@ export 'chat_ollama.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain_ollama/lib/src/chat_models/chat_ollama.dart b/packages/langchain_ollama/lib/src/chat_models/chat_ollama.dart index 182b9061..717cf2ff 100644 --- a/packages/langchain_ollama/lib/src/chat_models/chat_ollama.dart +++ b/packages/langchain_ollama/lib/src/chat_models/chat_ollama.dart @@ -1,12 +1,13 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_tiktoken/langchain_tiktoken.dart'; import 'package:ollama_dart/ollama_dart.dart'; import 'package:uuid/uuid.dart'; -import '../llms/models/mappers.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import '../llms/mappers.dart'; +import 'mappers.dart'; +import 'types.dart'; /// Wrapper around [Ollama](https://ollama.ai) Completions API that enables /// to interact with the LLMs in a chat-like fashion. diff --git a/packages/langchain_ollama/lib/src/chat_models/models/mappers.dart b/packages/langchain_ollama/lib/src/chat_models/mappers.dart similarity index 97% rename from packages/langchain_ollama/lib/src/chat_models/models/mappers.dart rename to packages/langchain_ollama/lib/src/chat_models/mappers.dart index e6a164a3..f1dcb8c5 100644 --- a/packages/langchain_ollama/lib/src/chat_models/models/mappers.dart +++ b/packages/langchain_ollama/lib/src/chat_models/mappers.dart @@ -1,5 +1,6 @@ import 'package:collection/collection.dart'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; import 'package:ollama_dart/ollama_dart.dart'; /// Mapper for [GenerateCompletionResponse]. diff --git a/packages/langchain_ollama/lib/src/chat_models/models/models.dart b/packages/langchain_ollama/lib/src/chat_models/types.dart similarity index 99% rename from packages/langchain_ollama/lib/src/chat_models/models/models.dart rename to packages/langchain_ollama/lib/src/chat_models/types.dart index 2ddf9177..31ba6ec5 100644 --- a/packages/langchain_ollama/lib/src/chat_models/models/models.dart +++ b/packages/langchain_ollama/lib/src/chat_models/types.dart @@ -1,6 +1,6 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; -import '../../llms/models/models.dart'; +import '../llms/types.dart'; /// {@template chat_ollama_options} /// Options to pass into ChatOllama. diff --git a/packages/langchain_ollama/lib/src/embeddings/ollama_embeddings.dart b/packages/langchain_ollama/lib/src/embeddings/ollama_embeddings.dart index 11eba23f..d9c4eb0f 100644 --- a/packages/langchain_ollama/lib/src/embeddings/ollama_embeddings.dart +++ b/packages/langchain_ollama/lib/src/embeddings/ollama_embeddings.dart @@ -1,5 +1,6 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; import 'package:ollama_dart/ollama_dart.dart'; /// Wrapper around [Ollama](https://ollama.ai) Embeddings API. diff --git a/packages/langchain_ollama/lib/src/llms/llms.dart b/packages/langchain_ollama/lib/src/llms/llms.dart index e1ad8ad5..74455bb1 100644 --- a/packages/langchain_ollama/lib/src/llms/llms.dart +++ b/packages/langchain_ollama/lib/src/llms/llms.dart @@ -1,2 +1,2 @@ -export 'models/models.dart'; export 'ollama.dart'; +export 'types.dart'; diff --git a/packages/langchain_ollama/lib/src/llms/models/mappers.dart b/packages/langchain_ollama/lib/src/llms/mappers.dart similarity index 92% rename from packages/langchain_ollama/lib/src/llms/models/mappers.dart rename to packages/langchain_ollama/lib/src/llms/mappers.dart index 004a46e5..dd7ed761 100644 --- a/packages/langchain_ollama/lib/src/llms/models/mappers.dart +++ b/packages/langchain_ollama/lib/src/llms/mappers.dart @@ -1,7 +1,8 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/llms.dart'; import 'package:ollama_dart/ollama_dart.dart'; -import 'models.dart'; +import 'types.dart'; /// Mapper for [GenerateCompletionResponse]. extension LLMResultMapper on GenerateCompletionResponse { diff --git a/packages/langchain_ollama/lib/src/llms/ollama.dart b/packages/langchain_ollama/lib/src/llms/ollama.dart index de68b2e1..3f7294c7 100644 --- a/packages/langchain_ollama/lib/src/llms/ollama.dart +++ b/packages/langchain_ollama/lib/src/llms/ollama.dart @@ -1,10 +1,11 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_tiktoken/langchain_tiktoken.dart'; import 'package:ollama_dart/ollama_dart.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// Wrapper around [Ollama](https://ollama.ai) Completions API. /// diff --git a/packages/langchain_ollama/lib/src/llms/models/models.dart b/packages/langchain_ollama/lib/src/llms/types.dart similarity index 99% rename from packages/langchain_ollama/lib/src/llms/models/models.dart rename to packages/langchain_ollama/lib/src/llms/types.dart index 513ba276..260c2472 100644 --- a/packages/langchain_ollama/lib/src/llms/models/models.dart +++ b/packages/langchain_ollama/lib/src/llms/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/llms.dart'; /// {@template ollama_options} /// Options to pass into the Ollama LLM. diff --git a/packages/langchain_ollama/pubspec.yaml b/packages/langchain_ollama/pubspec.yaml index 7837f508..d24c7f42 100644 --- a/packages/langchain_ollama/pubspec.yaml +++ b/packages/langchain_ollama/pubspec.yaml @@ -19,7 +19,7 @@ environment: dependencies: collection: '>=1.17.0 <1.19.0' http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 langchain_tiktoken: ^1.0.1 meta: ^1.9.1 ollama_dart: ^0.0.3 diff --git a/packages/langchain_ollama/pubspec_overrides.yaml b/packages/langchain_ollama/pubspec_overrides.yaml index 6b7a1a5e..9090f50e 100644 --- a/packages/langchain_ollama/pubspec_overrides.yaml +++ b/packages/langchain_ollama/pubspec_overrides.yaml @@ -1,6 +1,6 @@ -# melos_managed_dependency_overrides: langchain,ollama_dart +# melos_managed_dependency_overrides: ollama_dart,langchain_core dependency_overrides: - langchain: - path: ../langchain + langchain_core: + path: ../langchain_core ollama_dart: path: ../ollama_dart diff --git a/packages/langchain_ollama/test/chat_models/chat_ollama_test.dart b/packages/langchain_ollama/test/chat_models/chat_ollama_test.dart index f73f4f17..c4deca36 100644 --- a/packages/langchain_ollama/test/chat_models/chat_ollama_test.dart +++ b/packages/langchain_ollama/test/chat_models/chat_ollama_test.dart @@ -2,7 +2,9 @@ import 'dart:convert'; import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_ollama/langchain_ollama.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_ollama/test/embeddings/ollama_test.dart b/packages/langchain_ollama/test/embeddings/ollama_test.dart index cbcdfdd4..c329fb5e 100644 --- a/packages/langchain_ollama/test/embeddings/ollama_test.dart +++ b/packages/langchain_ollama/test/embeddings/ollama_test.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_ollama/langchain_ollama.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_ollama/test/llms/ollama_test.dart b/packages/langchain_ollama/test/llms/ollama_test.dart index f295a0ba..cb525d34 100644 --- a/packages/langchain_ollama/test/llms/ollama_test.dart +++ b/packages/langchain_ollama/test/llms/ollama_test.dart @@ -1,7 +1,8 @@ // ignore_for_file: avoid_redundant_argument_values import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_ollama/langchain_ollama.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_openai/lib/langchain_openai.dart b/packages/langchain_openai/lib/langchain_openai.dart index 34671095..d2730a6b 100644 --- a/packages/langchain_openai/lib/langchain_openai.dart +++ b/packages/langchain_openai/lib/langchain_openai.dart @@ -8,3 +8,4 @@ export 'src/chains/chains.dart'; export 'src/chat_models/chat_models.dart'; export 'src/embeddings/embeddings.dart'; export 'src/llms/llms.dart'; +export 'src/tools/tools.dart'; diff --git a/packages/langchain_openai/lib/src/agents/agents.dart b/packages/langchain_openai/lib/src/agents/agents.dart index 0d6f0528..4317c7c1 100644 --- a/packages/langchain_openai/lib/src/agents/agents.dart +++ b/packages/langchain_openai/lib/src/agents/agents.dart @@ -1,2 +1 @@ export 'functions.dart'; -export 'tools/tools.dart'; diff --git a/packages/langchain_openai/lib/src/agents/functions.dart b/packages/langchain_openai/lib/src/agents/functions.dart index acf1df91..461a445b 100644 --- a/packages/langchain_openai/lib/src/agents/functions.dart +++ b/packages/langchain_openai/lib/src/agents/functions.dart @@ -1,4 +1,12 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/agents.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/exceptions.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/memory.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/tools.dart'; import '../chat_models/chat_models.dart'; diff --git a/packages/langchain_openai/lib/src/agents/tools/tools.dart b/packages/langchain_openai/lib/src/agents/tools/tools.dart deleted file mode 100644 index bbb811cb..00000000 --- a/packages/langchain_openai/lib/src/agents/tools/tools.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'dall_e.dart'; -export 'models/models.dart'; diff --git a/packages/langchain_openai/lib/src/chains/qa_with_sources.dart b/packages/langchain_openai/lib/src/chains/qa_with_sources.dart index 93b8e86f..2499369b 100644 --- a/packages/langchain_openai/lib/src/chains/qa_with_sources.dart +++ b/packages/langchain_openai/lib/src/chains/qa_with_sources.dart @@ -1,4 +1,6 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/langchain.dart'; +import 'package:langchain_core/output_parsers.dart'; import 'qa_with_structure.dart'; diff --git a/packages/langchain_openai/lib/src/chains/qa_with_structure.dart b/packages/langchain_openai/lib/src/chains/qa_with_structure.dart index ae819ded..344fb342 100644 --- a/packages/langchain_openai/lib/src/chains/qa_with_structure.dart +++ b/packages/langchain_openai/lib/src/chains/qa_with_structure.dart @@ -1,4 +1,9 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chains.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/langchain.dart'; +import 'package:langchain_core/memory.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; import '../chat_models/chat_models.dart'; diff --git a/packages/langchain_openai/lib/src/chat_models/chat_models.dart b/packages/langchain_openai/lib/src/chat_models/chat_models.dart index 91a785b9..83fa6764 100644 --- a/packages/langchain_openai/lib/src/chat_models/chat_models.dart +++ b/packages/langchain_openai/lib/src/chat_models/chat_models.dart @@ -1,2 +1,2 @@ export 'chat_openai.dart'; -export 'models/models.dart'; +export 'types.dart'; diff --git a/packages/langchain_openai/lib/src/chat_models/chat_openai.dart b/packages/langchain_openai/lib/src/chat_models/chat_openai.dart index 0db934b2..25635d91 100644 --- a/packages/langchain_openai/lib/src/chat_models/chat_openai.dart +++ b/packages/langchain_openai/lib/src/chat_models/chat_openai.dart @@ -1,11 +1,12 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_tiktoken/langchain_tiktoken.dart'; import 'package:openai_dart/openai_dart.dart'; import 'package:uuid/uuid.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// Wrapper around [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat). /// diff --git a/packages/langchain_openai/lib/src/chat_models/models/mappers.dart b/packages/langchain_openai/lib/src/chat_models/mappers.dart similarity index 98% rename from packages/langchain_openai/lib/src/chat_models/models/mappers.dart rename to packages/langchain_openai/lib/src/chat_models/mappers.dart index e7b2196a..d4e0c04b 100644 --- a/packages/langchain_openai/lib/src/chat_models/models/mappers.dart +++ b/packages/langchain_openai/lib/src/chat_models/mappers.dart @@ -1,9 +1,10 @@ import 'dart:convert'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/language_models.dart'; import 'package:openai_dart/openai_dart.dart'; -import 'models.dart'; +import 'types.dart'; /// Mapper for a list of [ChatMessage]s. extension ChatMessageListMapper on List { diff --git a/packages/langchain_openai/lib/src/chat_models/models/models.dart b/packages/langchain_openai/lib/src/chat_models/types.dart similarity index 99% rename from packages/langchain_openai/lib/src/chat_models/models/models.dart rename to packages/langchain_openai/lib/src/chat_models/types.dart index 57407c4c..f03c1fe5 100644 --- a/packages/langchain_openai/lib/src/chat_models/models/models.dart +++ b/packages/langchain_openai/lib/src/chat_models/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; /// {@template chat_openai_options} /// Options to pass into the OpenAI Chat Model. diff --git a/packages/langchain_openai/lib/src/embeddings/openai.dart b/packages/langchain_openai/lib/src/embeddings/openai.dart index d926f33d..40274c76 100644 --- a/packages/langchain_openai/lib/src/embeddings/openai.dart +++ b/packages/langchain_openai/lib/src/embeddings/openai.dart @@ -1,5 +1,7 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; +import 'package:langchain_core/utils.dart'; import 'package:openai_dart/openai_dart.dart'; /// Wrapper around OpenAI Embeddings API. diff --git a/packages/langchain_openai/lib/src/llms/llms.dart b/packages/langchain_openai/lib/src/llms/llms.dart index f0d5b3e4..0b661a9c 100644 --- a/packages/langchain_openai/lib/src/llms/llms.dart +++ b/packages/langchain_openai/lib/src/llms/llms.dart @@ -1,2 +1,2 @@ -export 'models/models.dart'; export 'openai.dart'; +export 'types.dart'; diff --git a/packages/langchain_openai/lib/src/llms/models/mappers.dart b/packages/langchain_openai/lib/src/llms/mappers.dart similarity index 92% rename from packages/langchain_openai/lib/src/llms/models/mappers.dart rename to packages/langchain_openai/lib/src/llms/mappers.dart index 5f411ced..75448c55 100644 --- a/packages/langchain_openai/lib/src/llms/models/mappers.dart +++ b/packages/langchain_openai/lib/src/llms/mappers.dart @@ -1,4 +1,5 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/language_models.dart'; +import 'package:langchain_core/llms.dart'; import 'package:openai_dart/openai_dart.dart'; /// Mapper for [CreateCompletionResponse]. diff --git a/packages/langchain_openai/lib/src/llms/openai.dart b/packages/langchain_openai/lib/src/llms/openai.dart index e12f44fb..70a5573f 100644 --- a/packages/langchain_openai/lib/src/llms/openai.dart +++ b/packages/langchain_openai/lib/src/llms/openai.dart @@ -1,10 +1,11 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/llms.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_tiktoken/langchain_tiktoken.dart'; import 'package:openai_dart/openai_dart.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// Wrapper around [OpenAI Completions API](https://platform.openai.com/docs/api-reference/completions). /// diff --git a/packages/langchain_openai/lib/src/llms/models/models.dart b/packages/langchain_openai/lib/src/llms/types.dart similarity index 99% rename from packages/langchain_openai/lib/src/llms/models/models.dart rename to packages/langchain_openai/lib/src/llms/types.dart index d3037f4c..fcb6f7b2 100644 --- a/packages/langchain_openai/lib/src/llms/models/models.dart +++ b/packages/langchain_openai/lib/src/llms/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/llms.dart'; /// {@template openai_options} /// Options to pass into the OpenAI LLM. diff --git a/packages/langchain_openai/lib/src/agents/tools/dall_e.dart b/packages/langchain_openai/lib/src/tools/dall_e.dart similarity index 98% rename from packages/langchain_openai/lib/src/agents/tools/dall_e.dart rename to packages/langchain_openai/lib/src/tools/dall_e.dart index 2a292bc0..e04f67a4 100644 --- a/packages/langchain_openai/lib/src/agents/tools/dall_e.dart +++ b/packages/langchain_openai/lib/src/tools/dall_e.dart @@ -2,10 +2,10 @@ import 'dart:async'; import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/tools.dart'; import 'package:openai_dart/openai_dart.dart'; -import 'models/models.dart'; +import 'types.dart'; export 'package:openai_dart/openai_dart.dart' show ImageQuality, ImageResponseFormat, ImageSize, ImageStyle; diff --git a/packages/langchain_openai/lib/src/tools/tools.dart b/packages/langchain_openai/lib/src/tools/tools.dart new file mode 100644 index 00000000..a0c45f4c --- /dev/null +++ b/packages/langchain_openai/lib/src/tools/tools.dart @@ -0,0 +1,2 @@ +export 'dall_e.dart'; +export 'types.dart'; diff --git a/packages/langchain_openai/lib/src/agents/tools/models/models.dart b/packages/langchain_openai/lib/src/tools/types.dart similarity index 97% rename from packages/langchain_openai/lib/src/agents/tools/models/models.dart rename to packages/langchain_openai/lib/src/tools/types.dart index 1915a86e..3b049dc6 100644 --- a/packages/langchain_openai/lib/src/agents/tools/models/models.dart +++ b/packages/langchain_openai/lib/src/tools/types.dart @@ -1,6 +1,6 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/tools.dart'; -import '../dall_e.dart'; +import 'dall_e.dart'; /// {@template open_ai_dall_e_tool_options} /// Generation options to pass into the [OpenAIDallETool]. diff --git a/packages/langchain_openai/pubspec.yaml b/packages/langchain_openai/pubspec.yaml index 1afc52d7..7e2fd7b0 100644 --- a/packages/langchain_openai/pubspec.yaml +++ b/packages/langchain_openai/pubspec.yaml @@ -19,11 +19,13 @@ environment: dependencies: collection: '>=1.17.0 <1.19.0' http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 langchain_tiktoken: ^1.0.1 meta: ^1.9.1 openai_dart: ^0.1.7 uuid: ^4.0.0 dev_dependencies: + langchain: ^0.4.2 + langchain_community: 0.0.1-dev.2 test: ^1.25.2 diff --git a/packages/langchain_openai/pubspec_overrides.yaml b/packages/langchain_openai/pubspec_overrides.yaml index 38e17ffd..18a3bcaa 100644 --- a/packages/langchain_openai/pubspec_overrides.yaml +++ b/packages/langchain_openai/pubspec_overrides.yaml @@ -1,6 +1,10 @@ -# melos_managed_dependency_overrides: langchain,openai_dart +# melos_managed_dependency_overrides: openai_dart,langchain_core,langchain_community,langchain dependency_overrides: langchain: path: ../langchain + langchain_community: + path: ../langchain_community + langchain_core: + path: ../langchain_core openai_dart: path: ../openai_dart diff --git a/packages/langchain_openai/test/agents/functions_test.dart b/packages/langchain_openai/test/agents/functions_test.dart index 54242de4..6bd038fd 100644 --- a/packages/langchain_openai/test/agents/functions_test.dart +++ b/packages/langchain_openai/test/agents/functions_test.dart @@ -3,7 +3,14 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain/langchain.dart' + show AgentExecutor, ConversationBufferMemory; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/agents.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; +import 'package:langchain_core/tools.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; @@ -11,10 +18,13 @@ void main() { group('OpenAIFunctionsAgent tests', () { final openaiApiKey = Platform.environment['OPENAI_API_KEY']; - test('Test OpenAIFunctionsAgent', () async { + test('Test OpenAIFunctionsAgent with calculator tool', () async { final llm = ChatOpenAI( apiKey: openaiApiKey, - defaultOptions: const ChatOpenAIOptions(temperature: 0), + defaultOptions: const ChatOpenAIOptions( + model: 'gpt-4-turbo-preview', + temperature: 0, + ), ); final tool = CalculatorTool(); @@ -25,7 +35,7 @@ void main() { final executor = AgentExecutor(agent: agent); - final res = await executor.run('What is 40 raised to the 0.43 power? '); + final res = await executor.run('What is 40 raised to the 0.43 power with 3 decimals? '); expect(res, contains('4.88')); }); @@ -33,7 +43,10 @@ void main() { Future testMemory({required final bool returnMessages}) async { final llm = ChatOpenAI( apiKey: openaiApiKey, - defaultOptions: const ChatOpenAIOptions(temperature: 0), + defaultOptions: const ChatOpenAIOptions( + model: 'gpt-4-turbo-preview', + temperature: 0, + ), ); final tool = BaseTool.fromFunction( @@ -121,7 +134,10 @@ void main() { final model = ChatOpenAI( apiKey: openaiApiKey, - defaultOptions: const ChatOpenAIOptions(temperature: 0), + defaultOptions: const ChatOpenAIOptions( + model: 'gpt-4-turbo-preview', + temperature: 0, + ), ).bind(ChatOpenAIOptions(functions: [tool.toChatFunction()])); final agent = Agent.fromRunnable( @@ -149,7 +165,7 @@ void main() { test('Test OpenAIFunctionsAgent LCEL equivalent', () async { final res = await executor.invoke({ - 'input': 'What is 40 raised to the 0.43 power?', + 'input': 'What is 40 raised to the 0.43 power with 3 decimals?', }); expect(res['output'], contains('4.88')); }); diff --git a/packages/langchain_openai/test/chains/qa_with_sources_test.dart b/packages/langchain_openai/test/chains/qa_with_sources_test.dart index 8bb25ef7..f51ba94e 100644 --- a/packages/langchain_openai/test/chains/qa_with_sources_test.dart +++ b/packages/langchain_openai/test/chains/qa_with_sources_test.dart @@ -4,7 +4,18 @@ library; // Uses dart:io import 'dart:io'; import 'package:collection/collection.dart'; -import 'package:langchain/langchain.dart'; +import 'package:langchain/langchain.dart' + show + MemoryVectorStore, + RecursiveCharacterTextSplitter, + RetrievalQAChain, + StuffDocumentsChain; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; +import 'package:langchain_core/runnables.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_openai/test/chat_models/anyscale_test.dart b/packages/langchain_openai/test/chat_models/anyscale_test.dart index 791e253b..798e77b3 100644 --- a/packages/langchain_openai/test/chat_models/anyscale_test.dart +++ b/packages/langchain_openai/test/chat_models/anyscale_test.dart @@ -3,7 +3,8 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; @@ -84,7 +85,7 @@ void main() { String content = ''; int count = 0; await for (final res in stream) { - content += res.firstOutputAsString.replaceAll(RegExp(r'[\s\n]'), ''); + content += res.firstOutputAsString.replaceAll(RegExp(r'[\s\n,]'), ''); count++; } expect(count, greaterThan(1), reason: model); diff --git a/packages/langchain_openai/test/chat_models/chat_openai_test.dart b/packages/langchain_openai/test/chat_models/chat_openai_test.dart index 10cf6681..5d920a10 100644 --- a/packages/langchain_openai/test/chat_models/chat_openai_test.dart +++ b/packages/langchain_openai/test/chat_models/chat_openai_test.dart @@ -4,7 +4,9 @@ library; // Uses dart:io import 'dart:convert'; import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; @@ -346,7 +348,7 @@ void main() { defaultOptions: const ChatOpenAIOptions( model: 'gpt-4-turbo-preview', temperature: 0, - seed: 9999, + seed: 12345, ), ); diff --git a/packages/langchain_openai/test/chat_models/open_router_test.dart b/packages/langchain_openai/test/chat_models/open_router_test.dart index b16cfcb8..bbfdd284 100644 --- a/packages/langchain_openai/test/chat_models/open_router_test.dart +++ b/packages/langchain_openai/test/chat_models/open_router_test.dart @@ -3,7 +3,8 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_openai/test/chat_models/together_ai_test.dart b/packages/langchain_openai/test/chat_models/together_ai_test.dart index 4883e75f..23487180 100644 --- a/packages/langchain_openai/test/chat_models/together_ai_test.dart +++ b/packages/langchain_openai/test/chat_models/together_ai_test.dart @@ -3,7 +3,8 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/chat_models.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; @@ -29,7 +30,6 @@ void main() { 'NousResearch/Nous-Hermes-2-Yi-34B', 'openchat/openchat-3.5-1210', 'togethercomputer/llama-2-70b-chat', - 'togethercomputer/falcon-40b-instruct', ]; for (final model in models) { final res = await chatModel.invoke( @@ -68,7 +68,6 @@ void main() { 'NousResearch/Nous-Hermes-2-Yi-34B', 'openchat/openchat-3.5-1210', 'togethercomputer/llama-2-70b-chat', - 'togethercomputer/falcon-40b-instruct', ]; for (final model in models) { final stream = chatModel.stream( diff --git a/packages/langchain_openai/test/embeddings/openai_embeddings_test.dart b/packages/langchain_openai/test/embeddings/openai_embeddings_test.dart index cd9f9d91..d9aee3e5 100644 --- a/packages/langchain_openai/test/embeddings/openai_embeddings_test.dart +++ b/packages/langchain_openai/test/embeddings/openai_embeddings_test.dart @@ -3,7 +3,7 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_openai/test/embeddings/together_ai_embeddings_test.dart b/packages/langchain_openai/test/embeddings/together_ai_embeddings_test.dart index 74833e82..e6df890b 100644 --- a/packages/langchain_openai/test/embeddings/together_ai_embeddings_test.dart +++ b/packages/langchain_openai/test/embeddings/together_ai_embeddings_test.dart @@ -36,7 +36,7 @@ void main() { embeddings.model = model; final res = await embeddings.embedQuery('Hello world'); expect(res.length, greaterThan(0)); - await Future.delayed(const Duration(seconds: 1)); // Rate limit + await Future.delayed(const Duration(seconds: 2)); // Rate limit } }); }); diff --git a/packages/langchain_openai/test/llms/openai_test.dart b/packages/langchain_openai/test/llms/openai_test.dart index 1431541a..fee7bdc3 100644 --- a/packages/langchain_openai/test/llms/openai_test.dart +++ b/packages/langchain_openai/test/llms/openai_test.dart @@ -3,7 +3,8 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/output_parsers.dart'; +import 'package:langchain_core/prompts.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_openai/test/agents/tools/dall_e_test.dart b/packages/langchain_openai/test/tools/dall_e_test.dart similarity index 92% rename from packages/langchain_openai/test/agents/tools/dall_e_test.dart rename to packages/langchain_openai/test/tools/dall_e_test.dart index 47c0dcd5..9a9f34a8 100644 --- a/packages/langchain_openai/test/agents/tools/dall_e_test.dart +++ b/packages/langchain_openai/test/tools/dall_e_test.dart @@ -4,7 +4,9 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain/langchain.dart' show AgentExecutor; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/tools.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_pinecone/example/langchain_pinecone_example.dart b/packages/langchain_pinecone/example/langchain_pinecone_example.dart index c825b5d6..be504897 100644 --- a/packages/langchain_pinecone/example/langchain_pinecone_example.dart +++ b/packages/langchain_pinecone/example/langchain_pinecone_example.dart @@ -1,7 +1,7 @@ // ignore_for_file: avoid_print import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:langchain_pinecone/langchain_pinecone.dart'; diff --git a/packages/langchain_pinecone/lib/src/vector_stores/models/mappers.dart b/packages/langchain_pinecone/lib/src/vector_stores/mappers.dart similarity index 93% rename from packages/langchain_pinecone/lib/src/vector_stores/models/mappers.dart rename to packages/langchain_pinecone/lib/src/vector_stores/mappers.dart index f885df92..17a36ce3 100644 --- a/packages/langchain_pinecone/lib/src/vector_stores/models/mappers.dart +++ b/packages/langchain_pinecone/lib/src/vector_stores/mappers.dart @@ -1,6 +1,6 @@ import 'package:pinecone/pinecone.dart'; -import 'models.dart'; +import 'types.dart'; /// Mapper for [PineconeSparseVector]. extension PineconeSparseVectorMapper on PineconeSparseVector { diff --git a/packages/langchain_pinecone/lib/src/vector_stores/pinecone.dart b/packages/langchain_pinecone/lib/src/vector_stores/pinecone.dart index 8b00ca6c..b0bc6665 100644 --- a/packages/langchain_pinecone/lib/src/vector_stores/pinecone.dart +++ b/packages/langchain_pinecone/lib/src/vector_stores/pinecone.dart @@ -1,10 +1,11 @@ import 'package:http/http.dart' as http; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:pinecone/pinecone.dart'; import 'package:uuid/uuid.dart'; -import 'models/mappers.dart'; -import 'models/models.dart'; +import 'mappers.dart'; +import 'types.dart'; /// {@template pinecone} /// Vector store for Pinecone vector database. diff --git a/packages/langchain_pinecone/lib/src/vector_stores/models/models.dart b/packages/langchain_pinecone/lib/src/vector_stores/types.dart similarity index 97% rename from packages/langchain_pinecone/lib/src/vector_stores/models/models.dart rename to packages/langchain_pinecone/lib/src/vector_stores/types.dart index 5543b1bb..4b5ea90e 100644 --- a/packages/langchain_pinecone/lib/src/vector_stores/models/models.dart +++ b/packages/langchain_pinecone/lib/src/vector_stores/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/vector_stores.dart'; /// {@template pinecone_similarity_search} /// Pinecone similarity search config. diff --git a/packages/langchain_pinecone/lib/src/vector_stores/vector_stores.dart b/packages/langchain_pinecone/lib/src/vector_stores/vector_stores.dart index c1e02f2c..207cbe00 100644 --- a/packages/langchain_pinecone/lib/src/vector_stores/vector_stores.dart +++ b/packages/langchain_pinecone/lib/src/vector_stores/vector_stores.dart @@ -1,2 +1,2 @@ -export 'models/models.dart'; export 'pinecone.dart'; +export 'types.dart'; diff --git a/packages/langchain_pinecone/pubspec.yaml b/packages/langchain_pinecone/pubspec.yaml index 087893c7..3f24600e 100644 --- a/packages/langchain_pinecone/pubspec.yaml +++ b/packages/langchain_pinecone/pubspec.yaml @@ -18,7 +18,7 @@ environment: dependencies: http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 meta: ^1.9.1 pinecone: ^0.7.2 uuid: ^4.0.0 diff --git a/packages/langchain_pinecone/pubspec_overrides.yaml b/packages/langchain_pinecone/pubspec_overrides.yaml index f4aa1646..8dd8d545 100644 --- a/packages/langchain_pinecone/pubspec_overrides.yaml +++ b/packages/langchain_pinecone/pubspec_overrides.yaml @@ -1,7 +1,7 @@ -# melos_managed_dependency_overrides: langchain,langchain_openai,openai_dart +# melos_managed_dependency_overrides: langchain_openai,openai_dart,langchain_core dependency_overrides: - langchain: - path: ../langchain + langchain_core: + path: ../langchain_core langchain_openai: path: ../langchain_openai openai_dart: diff --git a/packages/langchain_pinecone/test/vector_stores/pinecone_test.dart b/packages/langchain_pinecone/test/vector_stores/pinecone_test.dart index 029da170..8b704414 100644 --- a/packages/langchain_pinecone/test/vector_stores/pinecone_test.dart +++ b/packages/langchain_pinecone/test/vector_stores/pinecone_test.dart @@ -3,7 +3,7 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/documents.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:langchain_pinecone/langchain_pinecone.dart'; import 'package:test/test.dart'; diff --git a/packages/langchain_supabase/lib/src/vector_stores/models/models.dart b/packages/langchain_supabase/lib/src/vector_stores/types.dart similarity index 93% rename from packages/langchain_supabase/lib/src/vector_stores/models/models.dart rename to packages/langchain_supabase/lib/src/vector_stores/types.dart index 1aef7225..fe3548a1 100644 --- a/packages/langchain_supabase/lib/src/vector_stores/models/models.dart +++ b/packages/langchain_supabase/lib/src/vector_stores/types.dart @@ -1,4 +1,4 @@ -import 'package:langchain/langchain.dart'; +import 'package:langchain_core/vector_stores.dart'; /// {@template supabase_similarity_search} /// Supabase similarity search config. diff --git a/packages/langchain_supabase/lib/src/vector_stores/vector_stores.dart b/packages/langchain_supabase/lib/src/vector_stores/vector_stores.dart index 0d52e1e2..52295db4 100644 --- a/packages/langchain_supabase/lib/src/vector_stores/vector_stores.dart +++ b/packages/langchain_supabase/lib/src/vector_stores/vector_stores.dart @@ -1,2 +1,2 @@ -export 'models/models.dart'; export 'supabase.dart'; +export 'types.dart'; diff --git a/packages/langchain_supabase/pubspec.yaml b/packages/langchain_supabase/pubspec.yaml index 46112d5c..8d3a14e7 100644 --- a/packages/langchain_supabase/pubspec.yaml +++ b/packages/langchain_supabase/pubspec.yaml @@ -18,10 +18,12 @@ environment: dependencies: http: ^1.1.0 - langchain: ^0.4.2 + langchain_core: ^0.0.1-dev.2 meta: ^1.9.1 supabase: ^2.0.6 dev_dependencies: test: ^1.25.2 + langchain: ^0.4.2 + langchain_community: 0.0.1-dev.2 langchain_openai: ^0.4.1 diff --git a/packages/langchain_supabase/pubspec_overrides.yaml b/packages/langchain_supabase/pubspec_overrides.yaml index b774855f..5eb34624 100644 --- a/packages/langchain_supabase/pubspec_overrides.yaml +++ b/packages/langchain_supabase/pubspec_overrides.yaml @@ -1,8 +1,12 @@ -# melos_managed_dependency_overrides: langchain_openai,openai_dart +# melos_managed_dependency_overrides: langchain_openai,openai_dart,langchain_core,langchain_community # melos_managed_dependency_overrides: langchain dependency_overrides: langchain: path: ../langchain + langchain_community: + path: ../langchain_community + langchain_core: + path: ../langchain_core langchain_openai: path: ../langchain_openai openai_dart: diff --git a/packages/langchain_supabase/test/vector_stores/supabase_test.dart b/packages/langchain_supabase/test/vector_stores/supabase_test.dart index 856fde6d..ea1377a7 100644 --- a/packages/langchain_supabase/test/vector_stores/supabase_test.dart +++ b/packages/langchain_supabase/test/vector_stores/supabase_test.dart @@ -3,7 +3,11 @@ library; // Uses dart:io import 'dart:io'; -import 'package:langchain/langchain.dart'; +import 'package:langchain/langchain.dart' show RecursiveCharacterTextSplitter; +import 'package:langchain_community/langchain_community.dart'; +import 'package:langchain_core/documents.dart'; +import 'package:langchain_core/embeddings.dart'; +import 'package:langchain_core/vector_stores.dart'; import 'package:langchain_openai/langchain_openai.dart'; import 'package:langchain_supabase/langchain_supabase.dart'; import 'package:supabase/supabase.dart' as sp; diff --git a/packages/langchain_weaviate/pubspec.yaml b/packages/langchain_weaviate/pubspec.yaml index 5b48c5a5..f5f5de33 100644 --- a/packages/langchain_weaviate/pubspec.yaml +++ b/packages/langchain_weaviate/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_weaviate/pubspec_overrides.yaml b/packages/langchain_weaviate/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_weaviate/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_wikipedia/pubspec.yaml b/packages/langchain_wikipedia/pubspec.yaml index 04c32af3..e1377267 100644 --- a/packages/langchain_wikipedia/pubspec.yaml +++ b/packages/langchain_wikipedia/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_wikipedia/pubspec_overrides.yaml b/packages/langchain_wikipedia/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_wikipedia/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain diff --git a/packages/langchain_wolfram/pubspec.yaml b/packages/langchain_wolfram/pubspec.yaml index d731e66f..b64e02a0 100644 --- a/packages/langchain_wolfram/pubspec.yaml +++ b/packages/langchain_wolfram/pubspec.yaml @@ -15,10 +15,3 @@ topics: environment: sdk: ">=3.0.0 <4.0.0" - -dependencies: - langchain: ^0.4.2 - meta: ^1.9.1 - -dev_dependencies: - test: ^1.25.2 diff --git a/packages/langchain_wolfram/pubspec_overrides.yaml b/packages/langchain_wolfram/pubspec_overrides.yaml deleted file mode 100644 index fcc9c101..00000000 --- a/packages/langchain_wolfram/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: langchain -dependency_overrides: - langchain: - path: ../langchain