mirror of
https://github.com/deepset-ai/haystack.git
synced 2026-10-12 02:12:50 +00:00
f5ef7a7df6dfeef31aff6f93c54519ade77a01c9
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 | 373 | 2 | 99% | 197, 759 |
| 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% | 162-163, 190-191 |
| haystack/components/converters/docx.py | 155 | 1 | 99% | 246 |
| 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 | 47 | 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 | 129 | 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 | 93 | 11 | 88% | 228-229, 231-234, 238-239, 254-255, 286-288 |
| 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 | 71 | 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% | 88-92 |
| haystack/components/converters/utils.py | 37 | 0 | 100% | |
| haystack/components/converters/xlsx.py | 119 | 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 | 26 | 82% | 187, 225, 258, 280-281, 303, 309-315, 325-326, 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 | 152 | 0 | 100% | |
| haystack/components/extractors/llm_metadata_extractor.py | 166 | 12 | 93% | 316-324, 339-347, 408, 470 |
| 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% | 212-220, 288, 337-341, 426-430, 471, 504 |
| 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 | 1 | 98% | 274 |
| haystack/components/generators/chat/fallback.py | 102 | 3 | 97% | 258-263 |
| 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 | 233 | 4 | 98% | 468, 519, 691, 791 |
| haystack/components/generators/chat/openai_responses.py | 376 | 33 | 91% | 307, 431, 512, 528, 565, 590, 643-652, 668-669, 674, 684, 694-710, 720, 777, 872, 914-915, 938, 990, 1015, 1034 |
| 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 | 95 | 9 | 91% | 69, 83, 129, 162-163, 198, 214, 216, 218 |
| haystack/components/joiners/__init__.py | 5 | 0 | 100% | |
| haystack/components/joiners/answer_joiner.py | 57 | 1 | 98% | 164 |
| haystack/components/joiners/branch.py | 20 | 3 | 85% | 105, 116-117 |
| haystack/components/joiners/document_joiner.py | 104 | 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 | 125 | 1 | 99% | 107 |
| haystack/components/preprocessors/document_preprocessor.py | 47 | 2 | 96% | 168, 204 |
| haystack/components/preprocessors/document_splitter.py | 279 | 2 | 99% | 211, 237 |
| haystack/components/preprocessors/embedding_based_document_splitter.py | 229 | 12 | 95% | 297-298, 429, 481-493, 511, 528, 598-599 |
| haystack/components/preprocessors/hierarchical_document_splitter.py | 60 | 0 | 100% | |
| haystack/components/preprocessors/markdown_header_splitter.py | 172 | 6 | 97% | 278-279, 294-295, 346, 405 |
| haystack/components/preprocessors/python_code_splitter.py | 291 | 15 | 95% | 151, 163, 191, 198, 232, 281, 309-311, 412-414, 416, 529, 597 |
| haystack/components/preprocessors/recursive_splitter.py | 241 | 19 | 92% | 166-169, 211-213, 254-256, 272-274, 294, 416, 422-425 |
| haystack/components/preprocessors/sentence_tokenizer.py | 87 | 4 | 95% | 65-66, 73-78 |
| haystack/components/preprocessors/text_cleaner.py | 33 | 0 | 100% | |
| haystack/components/query/__init__.py | 5 | 0 | 100% | |
| haystack/components/query/query_expander.py | 137 | 10 | 93% | 272-273, 279, 289-290, 297-303, 314-317 |
| haystack/components/rankers/__init__.py | 5 | 0 | 100% | |
| haystack/components/rankers/llm_ranker.py | 154 | 5 | 97% | 317, 349, 376, 385, 389 |
| haystack/components/rankers/lost_in_the_middle.py | 43 | 2 | 95% | 83, 117 |
| haystack/components/rankers/meta_field.py | 119 | 0 | 100% | |
| haystack/components/rankers/meta_field_grouping_ranker.py | 39 | 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 | 30 | 1 | 97% | 55 |
| haystack/components/retrievers/in_memory/__init__.py | 5 | 0 | 100% | |
| haystack/components/retrievers/in_memory/bm25_retriever.py | 48 | 0 | 100% | |
| haystack/components/retrievers/in_memory/embedding_retriever.py | 53 | 1 | 98% | 102 |
| haystack/components/retrievers/multi_query_embedding_retriever.py | 82 | 2 | 98% | 202, 221 |
| haystack/components/retrievers/multi_query_text_retriever.py | 72 | 3 | 96% | 124, 178, 193 |
| haystack/components/retrievers/multi_retriever.py | 131 | 1 | 99% | 160 |
| haystack/components/retrievers/sentence_window_retriever.py | 111 | 1 | 99% | 138 |
| 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 | 178 | 8 | 96% | 481-482, 518, 536, 578, 596, 606, 618 |
| haystack/components/routers/document_length_router.py | 15 | 0 | 100% | |
| haystack/components/routers/document_type_router.py | 48 | 0 | 100% | |
| haystack/components/routers/file_type_router.py | 78 | 6 | 92% | 197-202 |
| haystack/components/routers/llm_messages_router.py | 92 | 1 | 99% | 204 |
| haystack/components/routers/metadata_router.py | 38 | 0 | 100% | |
| haystack/components/samplers/__init__.py | 5 | 0 | 100% | |
| haystack/components/samplers/top_p.py | 67 | 0 | 100% | |
| haystack/components/validators/__init__.py | 5 | 0 | 100% | |
| haystack/components/validators/json_schema.py | 71 | 7 | 90% | 23-24, 137, 139, 154, 242, 248 |
| 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 | 639 | 51 | 92% | 270-271, 275, 490, 710, 747-757, 946, 1014, 1597, 1764, 1768, 1778-1784, 1801-1863 |
| haystack/core/pipeline/breakpoint.py | 109 | 11 | 90% | 52, 71, 90, 98, 125-130, 197 |
| 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 | 331 | 19 | 94% | 174, 181, 425, 568, 603, 771, 965, 970, 987-991, 995-1007, 1048-1057, 1082 |
| 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 | 135 | 0 | 100% | |
| haystack/core/super_component/__init__.py | 2 | 0 | 100% | |
| haystack/core/super_component/super_component.py | 195 | 7 | 96% | 67, 199, 212, 250, 304, 346, 599 |
| haystack/core/super_component/utils.py | 95 | 4 | 96% | 77, 112, 124, 181 |
| haystack/core/type_utils.py | 173 | 6 | 97% | 95, 97, 102, 167, 211, 306 |
| 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 | 348 | 4 | 99% | 154, 395, 411, 633 |
| 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 | 446 | 16 | 96% | 66, 468-469, 478, 584, 665, 716, 718, 745-746, 802, 944, 946, 964, 969-970 |
| haystack/document_stores/types/__init__.py | 4 | 0 | 100% | |
| haystack/document_stores/types/filter_policy.py | 63 | 10 | 84% | 25, 38-39, 168, 176-182, 228-233, 237-243 |
| 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 | 111 | 1 | 99% | 296 |
| 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 | 49 | 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 | 188 | 5 | 97% | 338, 386, 430, 499, 693 |
| 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 | 121 | 1 | 99% | 205 |
| haystack/hooks/tool_result_offloading/policies.py | 17 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/stores.py | 34 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/types/__init__.py | 2 | 0 | 100% | |
| haystack/hooks/tool_result_offloading/types/protocol.py | 19 | 2 | 89% | 56, 61 |
| haystack/hooks/utils.py | 47 | 0 | 100% | |
| haystack/lazy_imports.py | 13 | 0 | 100% | |
| haystack/logging.py | 142 | 4 | 97% | 251-252, 383-385 |
| 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 | 105 | 2 | 98% | 102, 136 |
| 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 | 51 | 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 | 64 | 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 | 110 | 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 | 59 | 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 | 51 | 3 | 94% | 101, 157, 243 |
| 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 | 6 | 94% | 22, 116, 124, 128, 133, 161 |
| 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 | 66 | 8 | 88% | 56, 60, 117-119, 129, 140, 171 |
| haystack/utils/dataclasses.py | 22 | 0 | 100% | |
| haystack/utils/deserialization.py | 18 | 1 | 94% | 54 |
| haystack/utils/device.py | 216 | 17 | 92% | 237-239, 325-327, 364, 403, 456, 477, 493, 521-524, 548-549 |
| haystack/utils/experimental.py | 14 | 0 | 100% | |
| haystack/utils/filters.py | 158 | 0 | 100% | |
| haystack/utils/hf.py | 62 | 15 | 76% | 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 | 17368 | 734 | 96% |
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
Open-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.
agent-frameworkagentic-aiagentic-ragagentsaiai-agentscontext-engineeringframeworkgenaigenerative-aiinformation-retrievallarge-language-modelsllmmcpmulti-agentorchestrationpythonragretrieval-augmented-generationsemantic-search
Readme
Apache-2.0
450 MiB
Languages
Python
98.3%
HTML
1.4%
Shell
0.2%