2afc33456fa36104cc7c463fb33a20f545b26ce0
Repository Coverage
| Name | Stmts | Miss | Cover | Missing |
|---|---|---|---|---|
| haystack/__init__.py | 11 | 0 | 100% | |
| haystack/components/__init__.py | 0 | 0 | 100% | |
| haystack/components/agents/__init__.py | 5 | 0 | 100% | |
| haystack/components/agents/agent.py | 360 | 3 | 99% | 160, 176, 735 |
| haystack/components/agents/state/__init__.py | 5 | 0 | 100% | |
| haystack/components/agents/state/state.py | 77 | 2 | 97% | 76, 80 |
| haystack/components/agents/state/state_utils.py | 18 | 0 | 100% | |
| haystack/components/agents/tool_calling.py | 250 | 5 | 98% | 30, 257-259, 635 |
| haystack/components/agents/utils.py | 120 | 3 | 98% | 80, 126, 297 |
| haystack/components/builders/__init__.py | 5 | 0 | 100% | |
| haystack/components/builders/answer_builder.py | 98 | 3 | 97% | 270, 291, 303 |
| haystack/components/builders/chat_prompt_builder.py | 110 | 2 | 98% | 178, 265 |
| haystack/components/builders/prompt_builder.py | 50 | 0 | 100% | |
| haystack/components/caching/__init__.py | 5 | 0 | 100% | |
| haystack/components/caching/cache_checker.py | 43 | 0 | 100% | |
| haystack/components/converters/__init__.py | 5 | 0 | 100% | |
| haystack/components/converters/csv.py | 88 | 4 | 95% | 161-162, 189-190 |
| haystack/components/converters/docx.py | 146 | 1 | 99% | 240 |
| haystack/components/converters/file_to_file_content.py | 32 | 0 | 100% | |
| haystack/components/converters/html.py | 50 | 0 | 100% | |
| haystack/components/converters/image/__init__.py | 5 | 0 | 100% | |
| haystack/components/converters/image/document_to_image.py | 43 | 0 | 100% | |
| haystack/components/converters/image/file_to_document.py | 27 | 1 | 96% | 94 |
| haystack/components/converters/image/file_to_image.py | 53 | 0 | 100% | |
| haystack/components/converters/image/image_utils.py | 128 | 5 | 96% | 78-82, 104, 109-110 |
| haystack/components/converters/image/pdf_to_image.py | 46 | 3 | 93% | 137-141 |
| haystack/components/converters/json.py | 91 | 11 | 88% | 228-229, 231-234, 238-239, 251-252, 283-285 |
| haystack/components/converters/markdown.py | 71 | 10 | 86% | 107, 120-122, 128-134, 152, 173-178 |
| haystack/components/converters/msg.py | 77 | 5 | 94% | 91, 165-167, 179 |
| haystack/components/converters/multi_file_converter.py | 50 | 0 | 100% | |
| haystack/components/converters/output_adapter.py | 69 | 1 | 99% | 133 |
| haystack/components/converters/pdfminer.py | 105 | 0 | 100% | |
| haystack/components/converters/pptx.py | 69 | 2 | 97% | 89-90 |
| haystack/components/converters/pypdf.py | 103 | 6 | 94% | 192, 209-211, 267-271 |
| haystack/components/converters/txt.py | 34 | 3 | 91% | 87-91 |
| haystack/components/converters/utils.py | 37 | 0 | 100% | |
| haystack/components/converters/xlsx.py | 113 | 3 | 97% | 83, 183, 185 |
| haystack/components/embedders/__init__.py | 5 | 0 | 100% | |
| haystack/components/embedders/azure_document_embedder.py | 69 | 2 | 97% | 121, 124 |
| haystack/components/embedders/azure_text_embedder.py | 63 | 2 | 97% | 107, 110 |
| haystack/components/embedders/mock_document_embedder.py | 58 | 0 | 100% | |
| haystack/components/embedders/mock_text_embedder.py | 50 | 0 | 100% | |
| haystack/components/embedders/mock_utils.py | 25 | 0 | 100% | |
| haystack/components/embedders/openai_document_embedder.py | 145 | 44 | 70% | 187, 225, 258, 280-281, 292-328, 377-398 |
| haystack/components/embedders/openai_text_embedder.py | 73 | 9 | 88% | 162, 229-231, 249-253 |
| haystack/components/embedders/types/__init__.py | 2 | 0 | 100% | |
| haystack/components/embedders/types/protocol.py | 6 | 0 | 100% | |
| haystack/components/evaluators/__init__.py | 5 | 0 | 100% | |
| haystack/components/evaluators/answer_exact_match.py | 15 | 0 | 100% | |
| haystack/components/evaluators/context_relevance.py | 50 | 0 | 100% | |
| haystack/components/evaluators/document_map.py | 52 | 4 | 92% | 73, 76-80, 134 |
| haystack/components/evaluators/document_mrr.py | 42 | 4 | 90% | 71, 74-78, 122 |
| haystack/components/evaluators/document_ndcg.py | 70 | 0 | 100% | |
| haystack/components/evaluators/document_recall.py | 73 | 2 | 97% | 109-113 |
| haystack/components/evaluators/faithfulness.py | 50 | 0 | 100% | |
| haystack/components/evaluators/llm_evaluator.py | 160 | 1 | 99% | 241 |
| haystack/components/evaluators/sas_evaluator.py | 57 | 25 | 56% | 111-125, 153-188 |
| haystack/components/extractors/__init__.py | 5 | 0 | 100% | |
| haystack/components/extractors/image/__init__.py | 5 | 0 | 100% | |
| haystack/components/extractors/image/llm_document_content_extractor.py | 156 | 1 | 99% | 323 |
| haystack/components/extractors/llm_metadata_extractor.py | 173 | 16 | 91% | 325-333, 347-355, 373-376, 419, 471 |
| haystack/components/extractors/regex_text_extractor.py | 49 | 0 | 100% | |
| haystack/components/fetchers/__init__.py | 5 | 0 | 100% | |
| haystack/components/fetchers/link_content.py | 202 | 18 | 91% | 210-218, 285, 334-338, 423-427, 466, 499 |
| haystack/components/generators/__init__.py | 5 | 0 | 100% | |
| haystack/components/generators/chat/__init__.py | 5 | 0 | 100% | |
| haystack/components/generators/chat/azure.py | 92 | 3 | 97% | 213, 371, 374 |
| haystack/components/generators/chat/azure_responses.py | 46 | 2 | 96% | 224, 271 |
| haystack/components/generators/chat/fallback.py | 98 | 3 | 97% | 252-257 |
| haystack/components/generators/chat/llm.py | 40 | 1 | 98% | 124 |
| haystack/components/generators/chat/mock.py | 154 | 0 | 100% | |
| haystack/components/generators/chat/openai.py | 232 | 4 | 98% | 468, 519, 690, 790 |
| haystack/components/generators/chat/openai_responses.py | 360 | 34 | 91% | 286, 317, 407, 488, 504, 541, 566, 619-628, 644-645, 650, 660, 670-686, 695, 752, 849, 891-892, 905, 957, 979, 998 |
| haystack/components/generators/chat/types/__init__.py | 2 | 0 | 100% | |
| haystack/components/generators/chat/types/protocol.py | 4 | 0 | 100% | |
| haystack/components/generators/openai_image_generator.py | 80 | 0 | 100% | |
| haystack/components/generators/utils.py | 93 | 9 | 90% | 69, 83, 129, 162-163, 195, 211, 213, 215 |
| haystack/components/joiners/__init__.py | 5 | 0 | 100% | |
| haystack/components/joiners/answer_joiner.py | 54 | 1 | 98% | 152 |
| haystack/components/joiners/branch.py | 20 | 3 | 85% | 105, 116-117 |
| haystack/components/joiners/document_joiner.py | 101 | 0 | 100% | |
| haystack/components/joiners/list_joiner.py | 23 | 0 | 100% | |
| haystack/components/joiners/string_joiner.py | 8 | 0 | 100% | |
| haystack/components/preprocessors/__init__.py | 5 | 0 | 100% | |
| haystack/components/preprocessors/csv_document_cleaner.py | 64 | 0 | 100% | |
| haystack/components/preprocessors/csv_document_splitter.py | 108 | 4 | 96% | 128, 131, 142-146 |
| haystack/components/preprocessors/document_cleaner.py | 117 | 1 | 99% | 101 |
| haystack/components/preprocessors/document_preprocessor.py | 46 | 2 | 96% | 162, 197 |
| haystack/components/preprocessors/document_splitter.py | 206 | 0 | 100% | |
| haystack/components/preprocessors/embedding_based_document_splitter.py | 226 | 12 | 95% | 297-298, 429, 471-483, 501, 518, 588-589 |
| haystack/components/preprocessors/hierarchical_document_splitter.py | 60 | 0 | 100% | |
| haystack/components/preprocessors/markdown_header_splitter.py | 166 | 6 | 96% | 235-236, 244, 292, 315, 370 |
| haystack/components/preprocessors/python_code_splitter.py | 290 | 15 | 95% | 150, 162, 190, 197, 231, 280, 308-310, 411-413, 415, 528, 596 |
| haystack/components/preprocessors/recursive_splitter.py | 242 | 19 | 92% | 148-151, 193-195, 236-238, 254-256, 276, 404, 410-413 |
| haystack/components/preprocessors/sentence_tokenizer.py | 83 | 5 | 94% | 62-63, 70-75, 215 |
| haystack/components/preprocessors/text_cleaner.py | 29 | 0 | 100% | |
| haystack/components/query/__init__.py | 5 | 0 | 100% | |
| haystack/components/query/query_expander.py | 137 | 10 | 93% | 274-275, 279, 289-290, 297-303, 314-317 |
| haystack/components/rankers/__init__.py | 5 | 0 | 100% | |
| haystack/components/rankers/llm_ranker.py | 154 | 7 | 95% | 317, 324-325, 349, 376, 385, 389 |
| haystack/components/rankers/lost_in_the_middle.py | 43 | 2 | 95% | 83, 117 |
| haystack/components/rankers/meta_field.py | 118 | 0 | 100% | |
| haystack/components/rankers/meta_field_grouping_ranker.py | 38 | 0 | 100% | |
| haystack/components/retrievers/__init__.py | 5 | 0 | 100% | |
| haystack/components/retrievers/auto_merging_retriever.py | 86 | 0 | 100% | |
| haystack/components/retrievers/filter_retriever.py | 28 | 1 | 96% | 55 |
| haystack/components/retrievers/in_memory/__init__.py | 5 | 0 | 100% | |
| haystack/components/retrievers/in_memory/bm25_retriever.py | 44 | 0 | 100% | |
| haystack/components/retrievers/in_memory/embedding_retriever.py | 49 | 1 | 98% | 102 |
| haystack/components/retrievers/multi_query_embedding_retriever.py | 78 | 2 | 97% | 194, 213 |
| haystack/components/retrievers/multi_query_text_retriever.py | 68 | 3 | 96% | 123, 170, 185 |
| haystack/components/retrievers/multi_retriever.py | 115 | 1 | 99% | 135 |
| haystack/components/retrievers/sentence_window_retriever.py | 103 | 5 | 95% | 138, 270-277, 292-299 |
| haystack/components/retrievers/text_embedding_retriever.py | 52 | 0 | 100% | |
| haystack/components/retrievers/types/__init__.py | 2 | 0 | 100% | |
| haystack/components/retrievers/types/protocol.py | 5 | 0 | 100% | |
| haystack/components/routers/__init__.py | 5 | 0 | 100% | |
| haystack/components/routers/conditional_router.py | 176 | 8 | 95% | 470-471, 507, 525, 567, 585, 595, 607 |
| haystack/components/routers/document_length_router.py | 15 | 0 | 100% | |
| haystack/components/routers/document_type_router.py | 46 | 0 | 100% | |
| haystack/components/routers/file_type_router.py | 72 | 6 | 92% | 182-187 |
| haystack/components/routers/llm_messages_router.py | 87 | 1 | 99% | 192 |
| haystack/components/routers/metadata_router.py | 36 | 0 | 100% | |
| haystack/components/samplers/__init__.py | 5 | 0 | 100% | |
| haystack/components/samplers/top_p.py | 65 | 0 | 100% | |
| haystack/components/validators/__init__.py | 5 | 0 | 100% | |
| haystack/components/validators/json_schema.py | 71 | 8 | 89% | 23-24, 137, 139, 154, 242, 248, 252 |
| haystack/components/writers/__init__.py | 5 | 0 | 100% | |
| haystack/components/writers/document_writer.py | 38 | 0 | 100% | |
| haystack/core/__init__.py | 2 | 0 | 100% | |
| haystack/core/component/__init__.py | 3 | 0 | 100% | |
| haystack/core/component/component.py | 179 | 1 | 99% | 346 |
| haystack/core/component/sockets.py | 41 | 6 | 85% | 82, 117-124, 129-130 |
| haystack/core/component/types.py | 42 | 3 | 93% | 88-90 |
| haystack/core/errors.py | 72 | 10 | 86% | 60-67, 127, 142-144, 151-153, 166 |
| haystack/core/pipeline/__init__.py | 2 | 0 | 100% | |
| haystack/core/pipeline/base.py | 636 | 51 | 92% | 270-271, 275, 490, 710, 747-757, 946, 1014, 1588, 1755, 1759, 1769-1775, 1792-1854 |
| haystack/core/pipeline/breakpoint.py | 106 | 11 | 90% | 52, 71, 80, 88, 115-120, 187 |
| haystack/core/pipeline/component_checks.py | 66 | 0 | 100% | |
| haystack/core/pipeline/descriptions.py | 6 | 0 | 100% | |
| haystack/core/pipeline/draw.py | 199 | 41 | 79% | 35-58, 142, 145, 148, 150, 158, 162-169, 296, 306, 378-380, 385, 393-394, 422-427 |
| haystack/core/pipeline/pipeline.py | 327 | 19 | 94% | 174, 181, 425, 568, 591, 759, 953, 958, 975-979, 983-995, 1036-1045, 1070 |
| haystack/core/pipeline/utils.py | 71 | 1 | 99% | 206 |
| haystack/core/serialization.py | 129 | 6 | 95% | 76, 100, 247, 334, 350-351 |
| haystack/core/serialization_security.py | 123 | 0 | 100% | |
| haystack/core/super_component/__init__.py | 2 | 0 | 100% | |
| haystack/core/super_component/super_component.py | 194 | 7 | 96% | 67, 196, 209, 247, 301, 343, 596 |
| haystack/core/super_component/utils.py | 95 | 4 | 96% | 77, 112, 124, 181 |
| haystack/core/type_utils.py | 165 | 6 | 96% | 95, 97, 102, 165, 201, 293 |
| haystack/dataclasses/__init__.py | 5 | 0 | 100% | |
| haystack/dataclasses/answer.py | 57 | 0 | 100% | |
| haystack/dataclasses/breakpoints.py | 39 | 0 | 100% | |
| haystack/dataclasses/byte_stream.py | 39 | 0 | 100% | |
| haystack/dataclasses/chat_message.py | 341 | 4 | 99% | 140, 381, 397, 619 |
| haystack/dataclasses/document.py | 104 | 4 | 96% | 79, 81, 83, 85 |
| haystack/dataclasses/file_content.py | 68 | 0 | 100% | |
| haystack/dataclasses/image_content.py | 85 | 2 | 98% | 100-104 |
| haystack/dataclasses/skill_info.py | 3 | 0 | 100% | |
| haystack/dataclasses/sparse_embedding.py | 14 | 0 | 100% | |
| haystack/dataclasses/streaming_chunk.py | 81 | 1 | 99% | 182 |
| haystack/document_stores/__init__.py | 0 | 0 | 100% | |
| haystack/document_stores/errors/__init__.py | 2 | 0 | 100% | |
| haystack/document_stores/errors/errors.py | 6 | 0 | 100% | |
| haystack/document_stores/in_memory/__init__.py | 5 | 0 | 100% | |
| haystack/document_stores/in_memory/document_store.py | 431 | 15 | 97% | 419-420, 429, 535, 616, 661, 663, 690-691, 745, 885, 887, 905, 910-911 |
| haystack/document_stores/types/__init__.py | 4 | 0 | 100% | |
| haystack/document_stores/types/filter_policy.py | 65 | 11 | 83% | 25, 38-39, 166, 174-181, 224-229, 233-239 |
| haystack/document_stores/types/policy.py | 6 | 0 | 100% | |
| haystack/document_stores/types/protocol.py | 11 | 0 | 100% | |
| haystack/errors.py | 2 | 0 | 100% | |
| haystack/evaluation/__init__.py | 5 | 0 | 100% | |
| haystack/evaluation/eval_run_result.py | 93 | 35 | 62% | 72-97, 111-120, 189, 192, 195, 200, 211, 215 |
| haystack/hooks/__init__.py | 5 | 0 | 100% | |
| haystack/hooks/budget/__init__.py | 5 | 0 | 100% | |
| haystack/hooks/budget/hooks.py | 32 | 0 | 100% | |
| haystack/hooks/compaction/__init__.py | 5 | 0 | 100% | |
| haystack/hooks/compaction/hooks.py | 101 | 5 | 95% | 258, 265, 270, 282-283 |
| haystack/hooks/compaction/sliding_window.py | 67 | 0 | 100% | |
| haystack/hooks/compaction/summarization.py | 171 | 16 | 91% | 89, 314-317, 475-479, 483-484, 488-492 |
| haystack/hooks/compaction/tool_result_pruning.py | 55 | 0 | 100% | |
| haystack/hooks/compaction/types/__init__.py | 2 | 0 | 100% | |
| haystack/hooks/compaction/types/protocol.py | 12 | 0 | 100% | |
| haystack/hooks/compaction/utils.py | 56 | 0 | 100% | |
| haystack/hooks/from_function.py | 45 | 0 | 100% | |
| haystack/hooks/human_in_the_loop/__init__.py | 5 | 0 | 100% | |
| haystack/hooks/human_in_the_loop/dataclasses.py | 16 | 0 | 100% | |
| haystack/hooks/human_in_the_loop/hooks.py | 30 | 1 | 97% | 117 |
| haystack/hooks/human_in_the_loop/policies.py | 17 | 0 | 100% | |
| haystack/hooks/human_in_the_loop/strategies.py | 193 | 5 | 97% | 338, 386, 430, 499, 706 |
| haystack/hooks/human_in_the_loop/types/__init__.py | 2 | 0 | 100% | |
| haystack/hooks/human_in_the_loop/types/protocol.py | 25 | 0 | 100% | |
| haystack/hooks/human_in_the_loop/user_interfaces.py | 96 | 2 | 98% | 65, 103 |
| haystack/hooks/invocation.py | 40 | 0 | 100% | |
| haystack/hooks/protocol.py | 15 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/__init__.py | 5 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/hooks.py | 95 | 1 | 99% | 222 |
| haystack/hooks/tool_result_offloading/policies.py | 17 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/stores.py | 27 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/types/__init__.py | 2 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/types/protocol.py | 18 | 2 | 89% | 39, 44 |
| haystack/hooks/utils.py | 47 | 0 | 100% | |
| haystack/lazy_imports.py | 13 | 0 | 100% | |
| haystack/logging.py | 129 | 4 | 97% | 247-248, 358-360 |
| haystack/marshal/__init__.py | 5 | 0 | 100% | |
| haystack/marshal/protocol.py | 4 | 0 | 100% | |
| haystack/marshal/yaml.py | 21 | 1 | 95% | 42 |
| haystack/skill_stores/__init__.py | 0 | 0 | 100% | |
| haystack/skill_stores/file_system/__init__.py | 5 | 0 | 100% | |
| haystack/skill_stores/file_system/skill_store.py | 95 | 1 | 99% | 119 |
| haystack/skill_stores/types/__init__.py | 2 | 0 | 100% | |
| haystack/skill_stores/types/protocol.py | 11 | 0 | 100% | |
| haystack/telemetry/__init__.py | 1 | 0 | 100% | |
| haystack/telemetry/_environment.py | 25 | 0 | 100% | |
| haystack/telemetry/_telemetry.py | 83 | 12 | 86% | 70-76, 94-95, 114-115, 188 |
| haystack/token_counters/__init__.py | 5 | 0 | 100% | |
| haystack/token_counters/approximate_counter.py | 21 | 0 | 100% | |
| haystack/token_counters/openai_counter.py | 48 | 1 | 98% | 107 |
| haystack/token_counters/tiktoken_counter.py | 28 | 0 | 100% | |
| haystack/token_counters/types/__init__.py | 2 | 0 | 100% | |
| haystack/token_counters/types/protocol.py | 10 | 0 | 100% | |
| haystack/token_counters/utils.py | 49 | 0 | 100% | |
| haystack/tools/__init__.py | 7 | 0 | 100% | |
| haystack/tools/agent_tool.py | 46 | 0 | 100% | |
| haystack/tools/component_tool.py | 100 | 5 | 95% | 367-368, 411-413 |
| haystack/tools/errors.py | 6 | 0 | 100% | |
| haystack/tools/from_function.py | 61 | 0 | 100% | |
| haystack/tools/parameters_schema_utils.py | 97 | 3 | 97% | 95, 135-136 |
| haystack/tools/pipeline_tool.py | 30 | 2 | 93% | 240, 243 |
| haystack/tools/searchable_toolset.py | 112 | 0 | 100% | |
| haystack/tools/serde_utils.py | 43 | 3 | 93% | 33, 35, 57 |
| haystack/tools/skills/__init__.py | 2 | 0 | 100% | |
| haystack/tools/skills/skill_toolset.py | 61 | 0 | 100% | |
| haystack/tools/tool.py | 150 | 5 | 97% | 174, 197, 241-242, 376 |
| haystack/tools/tool_types.py | 5 | 0 | 100% | |
| haystack/tools/toolset.py | 107 | 8 | 93% | 102, 158, 264, 407-411 |
| haystack/tools/utils.py | 29 | 0 | 100% | |
| haystack/tracing/__init__.py | 1 | 0 | 100% | |
| haystack/tracing/logging_tracer.py | 36 | 0 | 100% | |
| haystack/tracing/tracer.py | 54 | 4 | 93% | 28, 74, 94, 103 |
| haystack/tracing/utils.py | 26 | 0 | 100% | |
| haystack/utils/__init__.py | 5 | 0 | 100% | |
| haystack/utils/async_utils.py | 19 | 0 | 100% | |
| haystack/utils/auth.py | 105 | 11 | 90% | 22, 116, 124, 128, 133, 161, 234-238 |
| haystack/utils/azure.py | 6 | 2 | 67% | 15-16 |
| haystack/utils/base_serialization.py | 136 | 9 | 93% | 186-189, 210, 221, 331-335 |
| haystack/utils/callable_serialization.py | 68 | 8 | 88% | 57, 61, 118-120, 130, 141, 172 |
| haystack/utils/dataclasses.py | 22 | 0 | 100% | |
| haystack/utils/deserialization.py | 18 | 1 | 94% | 54 |
| haystack/utils/device.py | 214 | 17 | 92% | 237-239, 325-327, 364, 403, 447, 468, 484, 512-515, 539-540 |
| haystack/utils/experimental.py | 14 | 0 | 100% | |
| haystack/utils/filters.py | 158 | 0 | 100% | |
| haystack/utils/hf.py | 61 | 15 | 75% | 23-31, 40-51 |
| haystack/utils/http_client.py | 14 | 0 | 100% | |
| haystack/utils/jinja2_chat_extension.py | 146 | 1 | 99% | 405 |
| haystack/utils/jinja2_extensions.py | 47 | 0 | 100% | |
| haystack/utils/jinja2_sandbox.py | 16 | 0 | 100% | |
| haystack/utils/jupyter.py | 9 | 3 | 67% | 15-17 |
| haystack/utils/misc.py | 96 | 5 | 95% | 52-53, 129-132 |
| haystack/utils/requests_utils.py | 33 | 0 | 100% | |
| haystack/utils/type_serialization.py | 144 | 6 | 96% | 106, 108, 260-261, 269, 285 |
| haystack/utils/url_validation.py | 4 | 0 | 100% | |
| haystack/version.py | 5 | 2 | 60% | 9-10 |
| TOTAL | 17096 | 779 | 95% |
Setup coverage badge
Below are examples of the badges you can use in your main branch README file.
Direct image
This is the one to use if your repository is private or if you don't want to customize anything.
Shields.io Json Endpoint
Using this one will allow you to customize the look of your badge. It won't work with private repositories. It won't be refreshed more than once per five minutes.
Shields.io Dynamic Badge
This one will always be the same color. It won't work for private repos. I'm not even sure why we included it.
What is that?
This branch is part of the python-coverage-comment-action GitHub Action. All the files in this branch are automatically generated and may be overwritten at any moment.
Description
开源 AI 编排框架,构建模块化流水线与智能体工作流,面向 RAG 和检索增强生成场景。|GitHub 镜像 ⭐ 26.3k · 🍴 3k
https://github.com/deepset-ai/haystack
Readme
Apache-2.0
273 MiB
Languages
Python
98.2%
HTML
1.5%
Shell
0.2%