Harness LLMs with Multi-Agent Programming
This report summarizes scanner evidence for langroid/langroid, a Python project with 4,113 GitHub stars. SynthScan examined 145,502 lines of code across 695 source files, recording 2553 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 26.6 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1722 finding(s).
Are imports declared and package/API names verified? 287 finding(s).
Are wrappers, guards, and repeated structures necessary? 1834 finding(s).
Which changes need focused human review? 2553 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2553 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ugins/langroid/skills/patterns/mcp-tool-integration.md | 32 | async def setup_agent_with_all_tools(): | CODE |
| LOW | tests/conftest.py | 90 | def pytest_runtest_makereport(item, call): | STRING |
| LOW | tests/conftest.py | 154 | def pytest_collection_modifyitems(config, items): | STRING |
| LOW | tests/main/test_qdrant_lock_release.py | 13 | def test_qdrant_explicit_close(): | CODE |
| LOW | tests/main/test_qdrant_lock_release.py | 43 | def test_qdrant_context_manager(): | CODE |
| LOW | tests/main/test_qdrant_lock_release.py | 67 | def test_qdrant_context_manager_with_exception(): | CODE |
| LOW | tests/main/test_qdrant_lock_release.py | 94 | def test_qdrant_multiple_sequential_operations(): | CODE |
| LOW | tests/main/test_qdrant_lock_release.py | 115 | def test_qdrant_no_close_creates_new_directory(): | CODE |
| LOW | tests/main/test_docx_parser.py | 40 | def test_markitdown_docx_parser(): | CODE |
| LOW | tests/main/test_string_search.py | 46 | def test_return_correct_number_of_matches( | STRING |
| LOW | tests/main/test_string_search.py | 65 | def test_fuzzy_matches_return_corresponding_documents( | STRING |
| LOW | tests/main/test_string_search.py | 94 | def test_find_match_with_surrounding_words( | STRING |
| LOW | tests/main/test_string_search.py | 124 | def test_fuzzy_default_threshold_excludes_low_scores(threshold_docs): | STRING |
| LOW | tests/main/test_string_search.py | 148 | def test_fuzzy_score_threshold_filtering(threshold_docs, score_threshold, expected_ids): | CODE |
| LOW | tests/main/test_string_search.py | 167 | def test_fuzzy_non_finite_threshold_yields_no_matches(threshold_docs, bad_threshold): | CODE |
| LOW⚡ | tests/main/test_string_search.py | 200 | def test_preprocess_lowercase(): | CODE |
| LOW⚡ | tests/main/test_string_search.py | 205 | def test_preprocess_remove_punctuation(): | CODE |
| LOW⚡ | tests/main/test_string_search.py | 211 | def test_preprocess_remove_stopwords(): | CODE |
| LOW⚡ | tests/main/test_string_search.py | 220 | def test_preprocess_lemmatization(): | CODE |
| LOW | tests/main/test_string_search.py | 272 | def test_get_context_respects_word_boundaries(text, before, after, expected): | CODE |
| LOW | tests/main/test_string_search.py | 276 | def test_fuzzy_match_with_zero_neighbor_words(): | CODE |
| LOW | tests/main/test_string_search.py | 315 | def test_get_context_match_start_word_mapping( | CODE |
| LOW | tests/main/test_function_call_names.py | 25 | def test_function_names_are_preserved_for_agent_dispatch( | CODE |
| LOW | tests/main/test_function_call_names.py | 54 | def test_stray_function_prefix_is_still_repaired(name: str, tools_api: bool) -> None: | CODE |
| LOW | tests/main/test_function_call_names.py | 65 | def test_explicit_request_still_overrides_function_name(tools_api: bool) -> None: | CODE |
| LOW | tests/main/test_doc_chat_relevance.py | 175 | def test_doc_chat_rerank_diversity(test_settings: Settings, vecdb): | CODE |
| LOW | tests/main/test_doc_chat_relevance.py | 213 | def test_doc_chat_rerank_periphery(test_settings: Settings, vecdb): | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 58 | def test_to_chatdocument_user_string_is_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 64 | def test_agent_authored_string_not_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 70 | def test_agent_response_not_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 75 | def test_create_user_response_is_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 80 | def test_interactive_user_response_is_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 88 | def test_system_user_response_not_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 97 | def test_task_init_user_string_is_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 106 | def test_root_task_user_chatdocument_input_is_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 126 | def test_deepcopy_propagates_taint() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 134 | def test_donepass_repackage_propagates_taint() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 239 | def test_parsed_tools_stamped_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 268 | def test_filter_vetoes_tainted_tool_on_untainted_doc() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 300 | def test_handler_string_result_carries_taint_end_to_end() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 340 | def test_send_tool_reemission_carries_taint() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 388 | def test_no_tool_done_fallback_repackage_carries_taint() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 413 | def test_task_tool_seed_doc_carries_taint( | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 458 | def test_from_llm_message_user_role_is_tainted() -> None: | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 650 | def test_task_tool_self_taint_seeds_subtask( | CODE |
| LOW⚡ | tests/main/test_tool_origin_taint.py | 859 | def test_any_tool_recovery_propagates_wrapper_taint() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 148 | def test_donepass_repackage_of_llm_message_not_tainted() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 179 | def test_filter_vetoes_tainted_handoff() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 189 | def test_tainted_handoff_does_not_dispatch_handle_only_tool() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 251 | def test_tool_taint_survives_chatdocument_deepcopy() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 322 | def test_to_chatdocument_threads_source_doc_taint() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 352 | def test_agent_send_tool_reemission_carries_taint() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 369 | def test_done_tool_reemission_carries_taint() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 503 | def test_tainted_usable_tool_result_is_tainted_end_to_end() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 528 | async def test_tainted_usable_tool_result_is_tainted_async() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 550 | def test_tool_message_handler_result_stamped_when_trigger_tainted() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 596 | def test_tainted_handler_result_tool_is_not_executed() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 621 | def test_tainted_donepass_task_completes_with_taint() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 712 | def test_fallback_returned_tool_inherits_doc_taint() -> None: | CODE |
| LOW | tests/main/test_tool_origin_taint.py | 731 | async def test_fallback_returned_tool_inherits_doc_taint_async() -> None: | CODE |
| 1194 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.md | 0 | you will be given a number n. if it is odd, return (n*3+1), say nothing else. if it is even, say -10 | STRING |
| HIGH | tests/main/test_recipient_tool_async.py | 0 | you will be given a number n. if it is odd, return (n*3+1), say nothing else. if it is even, say -10 | STRING |
| HIGH | examples/quick-start/three-agent-chat-num-router.py | 0 | you will be given a number n. if it is odd, return (n*3+1), say nothing else. if it is even, say -10 | STRING |
| HIGH | README.md | 0 | to find how many numbers in my list are less than or equal to the <number> you specify. | STRING |
| HIGH | examples/langdb/langdb_chat_agent_tool.py | 0 | to find how many numbers in my list are less than or equal to the <number> you specify. | STRING |
| HIGH | examples/quick-start/chat-agent-tool.py | 0 | to find how many numbers in my list are less than or equal to the <number> you specify. | STRING |
| HIGH | README.md | 0 | done! successfully extracted lease info: {message.terms} | STRING |
| HIGH | examples/chainlit/multi-extract.py | 0 | done! successfully extracted lease info: {message.terms} | STRING |
| HIGH | examples/docqa/chat_multi_extract.py | 0 | done! successfully extracted lease info: {message.terms} | STRING |
| HIGH | tests/main/test_doc_chat_relevance.py | 0 | test window retrieval of relevant doc-chunks. check that we are retrieving 2 neighbors around each match. | STRING |
| HIGH | tests/main/test_doc_chat_agent.py | 0 | test window retrieval of relevant doc-chunks. check that we are retrieving 2 neighbors around each match. | STRING |
| HIGH | tests/extras/test_doc_chat_agent_llamacpp.py | 0 | test window retrieval of relevant doc-chunks. check that we are retrieving 2 neighbors around each match. | STRING |
| HIGH | tests/main/test_multi_agent_complex_async.py | 0 | you are a calculator. you will be given a multiplication problem. you simply reply with the answer, say nothing else. | STRING |
| HIGH | tests/main/test_multi_agent.py | 0 | you are a calculator. you will be given a multiplication problem. you simply reply with the answer, say nothing else. | STRING |
| HIGH | tests/main/test_multi_agent_complex.py | 0 | you are a calculator. you will be given a multiplication problem. you simply reply with the answer, say nothing else. | STRING |
| HIGH | tests/main/test_doc_chat_agent.py | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | tests/extras/test_doc_chat_agent_llamacpp.py | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | docs/notes/weaviate.md | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | docs/notes/pgvector.md | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | docs/quick-start/chat-agent-docs.md | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | examples/langdb/langdb_chat_agent_docs.py | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | examples/quick-start/chat-agent-docs.py | 0 | in the year 2050, gpt10 was released. in 2057, paperclips were seen all over the world. global warming was solved in 206 | STRING |
| HIGH | tests/main/test_doc_chat_agent.py | 0 | check we can ingest from a dataframe and run queries. | STRING |
| HIGH | tests/main/test_retriever_agent.py | 0 | check we can ingest from a dataframe and run queries. | STRING |
| HIGH | tests/extras/test_doc_chat_agent_llamacpp.py | 0 | check we can ingest from a dataframe and run queries. | STRING |
| HIGH | tests/main/test_tool_messages_async.py | 0 | test whether llm is able to generate message (tool) in required format, and the agent handles the message correctly. arg | STRING |
| HIGH | tests/main/test_stateless_tool_messages.py | 0 | test whether llm is able to generate message (tool) in required format, and the agent handles the message correctly. arg | STRING |
| HIGH | tests/main/test_tool_messages.py | 0 | test whether llm is able to generate message (tool) in required format, and the agent handles the message correctly. arg | STRING |
| HIGH | tests/main/test_tool_messages_azure.py | 0 | test whether llm is able to generate message (tool) in required format, and the agent handles the message correctly. arg | STRING |
| HIGH | docs/FAQ.md | 0 | important: you must include an actual query in the `query` field, | STRING |
| HIGH | examples/chainlit/chat-search-rag.py | 0 | important: you must include an actual query in the `query` field, | STRING |
| HIGH | examples/docqa/chat_search.py | 0 | important: you must include an actual query in the `query` field, | STRING |
| HIGH | examples/docqa/chat-search-filter.py | 0 | important: you must include an actual query in the `query` field, | STRING |
| HIGH | docs/FAQ.md | 0 | ------------------------------ ask me questions one by one, to fill in the fields of the `lease_info` function/tool. fir | STRING |
| HIGH | examples/chainlit/multi-extract-3.py | 0 | ------------------------------ ask me questions one by one, to fill in the fields of the `lease_info` function/tool. fir | STRING |
| HIGH | examples/docqa/chat-multi-extract-3.py | 0 | ------------------------------ ask me questions one by one, to fill in the fields of the `lease_info` function/tool. fir | STRING |
| HIGH | docs/notes/weaviate.md | 0 | we are living in an alternate universe where germany has occupied the usa, and the capital of usa is berlin. charlie cha | STRING |
| HIGH | docs/notes/pgvector.md | 0 | we are living in an alternate universe where germany has occupied the usa, and the capital of usa is berlin. charlie cha | STRING |
| HIGH | docs/quick-start/chat-agent-docs.md | 0 | we are living in an alternate universe where germany has occupied the usa, and the capital of usa is berlin. charlie cha | STRING |
| HIGH | examples/langdb/langdb_chat_agent_docs.py | 0 | we are living in an alternate universe where germany has occupied the usa, and the capital of usa is berlin. charlie cha | STRING |
| HIGH | examples/quick-start/chat-agent-docs.py | 0 | we are living in an alternate universe where germany has occupied the usa, and the capital of usa is berlin. charlie cha | STRING |
| HIGH | docs/examples/agent-tree.md | 0 | this is a stateless tool (i.e. does not use any agent member vars), so we can define the handler right here, instead of | STRING |
| HIGH | examples/basic/chat-tree-structured.py | 0 | this is a stateless tool (i.e. does not use any agent member vars), so we can define the handler right here, instead of | STRING |
| HIGH | examples/basic/chat-tree.py | 0 | this is a stateless tool (i.e. does not use any agent member vars), so we can define the handler right here, instead of | STRING |
| HIGH | examples/chainlit/chat-tree-chainlit.py | 0 | this is a stateless tool (i.e. does not use any agent member vars), so we can define the handler right here, instead of | STRING |
| HIGH | docs/quick-start/chat-agent-tool.md | 0 | i have a list of numbers between 1 and 20. your job is to find the smallest of them. to help with this, you can give me | STRING |
| HIGH | examples/langdb/langdb_chat_agent_tool.py | 0 | i have a list of numbers between 1 and 20. your job is to find the smallest of them. to help with this, you can give me | STRING |
| HIGH | examples/quick-start/chat-agent-tool.py | 0 | i have a list of numbers between 1 and 20. your job is to find the smallest of them. to help with this, you can give me | STRING |
| HIGH | examples/portkey/portkey_multi_provider.py | 0 | check if environment variable is set and return its value. | STRING |
| HIGH | examples/portkey/portkey_advanced_features.py | 0 | check if environment variable is set and return its value. | STRING |
| HIGH | examples/portkey/portkey_basic_chat.py | 0 | check if environment variable is set and return its value. | STRING |
| HIGH | examples/chainlit/chat-search-rag.py | 0 | get docs/extracts relevant to the query, from vecdb | STRING |
| HIGH | examples/docqa/chat_search.py | 0 | get docs/extracts relevant to the query, from vecdb | STRING |
| HIGH | examples/docqa/chat-search-filter.py | 0 | get docs/extracts relevant to the query, from vecdb | STRING |
| HIGH | examples/chainlit/chat-search-rag.py | 0 | no extracts found! you can try doing a web search with the `relevant_search_extracts` tool/function-call. | STRING |
| HIGH | examples/docqa/chat_search.py | 0 | no extracts found! you can try doing a web search with the `relevant_search_extracts` tool/function-call. | STRING |
| HIGH | examples/docqa/chat-search-filter.py | 0 | no extracts found! you can try doing a web search with the `relevant_search_extracts` tool/function-call. | STRING |
| HIGH | examples/chainlit/chat-search-rag.py | 0 | get docs/extracts relevant to the query, from a web search | STRING |
| HIGH | examples/docqa/chat_search.py | 0 | get docs/extracts relevant to the query, from a web search | STRING |
| HIGH | examples/docqa/chat-search-filter.py | 0 | get docs/extracts relevant to the query, from a web search | STRING |
| 75 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 262 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 265 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 288 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 291 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 333 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 381 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 385 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 407 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 410 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 452 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 455 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 468 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 473 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 644 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 647 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 852 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_origin_taint.py | 856 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 162 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 203 | # =========================================================================== | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 208 | # =========================================================================== | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 569 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 573 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 691 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 695 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 782 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_tool_origin_taint.py | 789 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/main/test_md_parser.py | 760 | # ---------------------------------------------------------------- | STRING |
| MEDIUM | tests/main/test_md_parser.py | 762 | # ---------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/main/test_context_truncation.py | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_context_truncation.py | 143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_vertexai_isolation.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_vertexai_isolation.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_vertexai_isolation.py | 812 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_vertexai_isolation.py | 814 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 81 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 83 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 92 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 94 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 148 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 150 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 273 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_taint_laundering.py | 275 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_handle_message_security.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_handle_message_security.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_handle_message_security.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_handle_message_security.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_handle_message_security.py | 120 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_handle_message_security.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_md_html_parser.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_md_html_parser.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_md_html_parser.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/main/test_md_html_parser.py | 61 | # --------------------------------------------------------------------------- | COMMENT |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/main/test_md_parser.py | 603 | # Define a header and content. | STRING |
| MEDIUM⚡ | tests/main/test_md_parser.py | 609 | # Create a sample Markdown document with a header and content. | STRING |
| MEDIUM | tests/main/test_md_parser.py | 537 | # Create a long text consisting of 200 repeated tokens ("word") | STRING |
| MEDIUM⚡ | tests/main/test_tool_handler.py | 309 | # Create a tool message | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_handler.py | 312 | # Create a ChatDocument with the tool message | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_handler.py | 345 | # Create a tool message | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_handler.py | 360 | # Create a tool message | COMMENT |
| MEDIUM⚡ | tests/main/test_tool_handler.py | 378 | # Create a tool message | COMMENT |
| MEDIUM | tests/main/test_tool_handler.py | 292 | # Create a tool message | COMMENT |
| MEDIUM | tests/main/test_tool_handler.py | 328 | # Create a tool message | COMMENT |
| MEDIUM | tests/main/test_tool_handler.py | 398 | # Create a tool message | COMMENT |
| MEDIUM | tests/main/test_task.py | 1034 | # Create a mock LLM that always responds with a tool in JSON format | COMMENT |
| MEDIUM | tests/main/test_task.py | 1104 | # Create an agent | COMMENT |
| MEDIUM | tests/main/test_llm.py | 781 | # Create a FileAttachment from the PDF file | COMMENT |
| MEDIUM⚡ | tests/main/test_llm.py | 827 | # Create a FileAttachment from the PDF file | COMMENT |
| MEDIUM⚡ | tests/main/test_llm.py | 833 | # Create a FileAttachment from the PDF file | COMMENT |
| MEDIUM | tests/main/test_chat_agent.py | 224 | # Create a FileAttachment from the PDF file | STRING |
| MEDIUM | tests/main/test_mcp_tools.py | 947 | # Create a mock server that returns image content | COMMENT |
| MEDIUM | tests/main/test_mcp_tools.py | 966 | # Create a mock agent | COMMENT |
| MEDIUM | tests/main/test_mcp_tools.py | 995 | # Create a mock CallToolResult with text and text resource | COMMENT |
| MEDIUM | tests/main/test_mcp_tools.py | 1041 | # Create a mock CallToolResult with text and blob resource | COMMENT |
| MEDIUM | tests/main/test_mcp_tools.py | 1169 | # Create a real MCP server | COMMENT |
| MEDIUM | tests/main/test_mcp_tools.py | 1181 | # Create a Tool with the problematic schema | COMMENT |
| MEDIUM | tests/main/test_mcp_tools.py | 1238 | # Create a real MCP server | COMMENT |
| MEDIUM | tests/main/test_openai_params_subclass.py | 39 | # Create an instance - note we can't pass custom fields to constructor | COMMENT |
| MEDIUM | tests/main/test_openai_params_subclass.py | 68 | # Create an instance with custom fields | COMMENT |
| MEDIUM | tests/main/test_tool_messages_async.py | 108 | # Define the range of values each variable can have | COMMENT |
| MEDIUM | tests/main/test_table_chat_agent.py | 128 | # Create a list of states | COMMENT |
| MEDIUM | tests/main/test_table_chat_agent.py | 381 | # Create a simple dataframe with data that needs cleaning | COMMENT |
| MEDIUM | tests/main/test_prep_llm_message.py | 43 | # Create a mock parser that counts tokens as characters for simplicity | COMMENT |
| MEDIUM | tests/main/test_prep_llm_message.py | 56 | # Create a mock LLM that returns a fixed context length | COMMENT |
| MEDIUM | tests/main/test_prep_llm_message.py | 150 | # Create a mock parser that counts tokens as characters for simplicity | COMMENT |
| MEDIUM | tests/main/test_prep_llm_message.py | 163 | # Create a mock LLM that returns a fixed context length | COMMENT |
| MEDIUM | tests/main/test_retriever_agent.py | 23 | # Create a list of states | COMMENT |
| MEDIUM | tests/main/test_stateless_tool_messages.py | 53 | # Define the range of values each variable can have | STRING |
| MEDIUM | tests/main/test_llm_async.py | 184 | # Create a FileAttachment from the PDF file | COMMENT |
| MEDIUM⚡ | tests/main/test_llm_async.py | 232 | # Create a FileAttachment from the PDF file | COMMENT |
| MEDIUM⚡ | tests/main/test_llm_async.py | 238 | # Create a FileAttachment from the PDF file | COMMENT |
| MEDIUM | tests/main/test_llm_async.py | 283 | # Create the LLM instance | STRING |
| MEDIUM | tests/main/test_task_optional_logger.py | 14 | # Create a simple mock agent | COMMENT |
| MEDIUM | tests/main/test_task_optional_logger.py | 46 | # Create a simple mock agent | COMMENT |
| MEDIUM⚡ | tests/main/test_task_optional_logger.py | 65 | # Create a simple mock agent | COMMENT |
| MEDIUM | tests/main/test_task_optional_logger.py | 77 | # Create a test message | COMMENT |
| MEDIUM | tests/main/test_task_tool.py | 56 | # Create main task that stops after handling the task_tool | STRING |
| MEDIUM | tests/main/test_task_tool.py | 186 | # Create a main agent with multiple tools available | STRING |
| MEDIUM | tests/main/test_task_tool.py | 276 | # Create a main agent that delegates with no tools | STRING |
| MEDIUM⚡ | tests/main/test_pydantic_utils.py | 25 | # Create an instance of TestModel with nested DetailsModel | COMMENT |
| MEDIUM | tests/main/test_html_logger.py | 40 | # Create a user message | COMMENT |
| MEDIUM | tests/main/test_tool_messages.py | 2262 | # Create a ChatDocument containing ToolB (which only AgentB knows about) | COMMENT |
| MEDIUM | tests/main/test_tool_messages.py | 157 | # Define the range of values each variable can have | STRING |
| MEDIUM | tests/main/test_file_tools.py | 164 | # Create a test file | STRING |
| MEDIUM | tests/main/test_global_settings.py | 201 | # Define a temporary override that forces quiet=True. | COMMENT |
| MEDIUM | tests/main/test_token_usage.py | 35 | # Define the configurations | COMMENT |
| MEDIUM | tests/main/sql_chat/test_sql_chat_agent.py | 56 | # Create an in-memory SQLite database | COMMENT |
| MEDIUM | tests/extras/test_csv_kg_chat.py | 14 | # Create a dummy DataFrame | COMMENT |
| MEDIUM | tests/extras/test_csv_kg_chat.py | 43 | # Create a mock PandasToKGTool object | COMMENT |
| MEDIUM | examples/langdb/langdb_chat_agent_tool.py | 72 | # Create a LangDB model configuration | STRING |
| MEDIUM | examples/langdb/langdb_custom_headers.py | 23 | # Create a LangDB model configuration | COMMENT |
| MEDIUM | examples/langdb/langdb_custom_headers.py | 34 | # Create the model | COMMENT |
| MEDIUM | examples/langdb/langdb_chat_agent_docs.py | 77 | # Create a LangDB model configuration | STRING |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main/test_arangodb_chat_agent.py | 8 | CODE | |
| LOW | tests/main/test_rich_file_logger.py | 1 | CODE | |
| LOW | examples/multi-agent-debate/chainlit_utils.py | 6 | CODE | |
| LOW | examples/basic/fn-call-local-simple.py | 28 | CODE | |
| LOW | examples/basic/planner-workflow-spawn.py | 31 | CODE | |
| LOW | examples/mcp/claude-code-mcp-single.py | 23 | CODE | |
| LOW | langroid/__init__.py | 5 | CODE | |
| LOW | langroid/__init__.py | 6 | CODE | |
| LOW | langroid/__init__.py | 8 | CODE | |
| LOW | langroid/__init__.py | 9 | CODE | |
| LOW | langroid/__init__.py | 10 | CODE | |
| LOW | langroid/__init__.py | 12 | CODE | |
| LOW | langroid/__init__.py | 13 | CODE | |
| LOW | langroid/__init__.py | 15 | CODE | |
| LOW | langroid/__init__.py | 16 | CODE | |
| LOW | langroid/__init__.py | 18 | CODE | |
| LOW | langroid/__init__.py | 18 | CODE | |
| LOW | langroid/__init__.py | 23 | CODE | |
| LOW | langroid/__init__.py | 23 | CODE | |
| LOW | langroid/__init__.py | 23 | CODE | |
| LOW | langroid/__init__.py | 29 | CODE | |
| LOW | langroid/__init__.py | 29 | CODE | |
| LOW | langroid/__init__.py | 29 | CODE | |
| LOW | langroid/__init__.py | 35 | CODE | |
| LOW | langroid/__init__.py | 39 | CODE | |
| LOW | langroid/__init__.py | 39 | CODE | |
| LOW | langroid/__init__.py | 44 | CODE | |
| LOW | langroid/__init__.py | 44 | CODE | |
| LOW | langroid/__init__.py | 47 | CODE | |
| LOW | langroid/__init__.py | 47 | CODE | |
| LOW | langroid/__init__.py | 47 | CODE | |
| LOW | langroid/__init__.py | 53 | CODE | |
| LOW | langroid/__init__.py | 54 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 1 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 2 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 3 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 5 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 5 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 9 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 20 | CODE | |
| LOW | langroid/embedding_models/__init__.py | 20 | CODE | |
| LOW | langroid/language_models/__init__.py | 1 | CODE | |
| LOW | langroid/language_models/__init__.py | 2 | CODE | |
| LOW | langroid/language_models/__init__.py | 3 | CODE | |
| LOW | langroid/language_models/__init__.py | 4 | CODE | |
| LOW | langroid/language_models/__init__.py | 5 | CODE | |
| LOW | langroid/language_models/__init__.py | 6 | CODE | |
| LOW | langroid/language_models/__init__.py | 7 | CODE | |
| LOW | langroid/language_models/__init__.py | 9 | CODE | |
| LOW | langroid/language_models/__init__.py | 9 | CODE | |
| LOW | langroid/language_models/__init__.py | 9 | CODE | |
| LOW | langroid/language_models/__init__.py | 9 | CODE | |
| 181 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 197 | except Exception: | CODE |
| HIGH | tests/utils.py | 28 | except ValueError: | CODE |
| HIGH | tests/main/test_qdrant_lock_release.py | 83 | except ValueError: | CODE |
| HIGH | tests/main/test_batch_concurrency.py | 504 | except error: | CODE |
| HIGH | tests/main/test_quiet_mode.py | 35 | except Exception: | CODE |
| HIGH | tests/main/test_llm.py | 263 | except catch_errors: | CODE |
| HIGH | tests/main/test_llm.py | 271 | except catch_errors: | CODE |
| HIGH | tests/main/test_openai_http_client.py | 355 | except Exception: | CODE |
| HIGH | tests/main/test_mcp_tools.py | 1122 | except Exception: | CODE |
| HIGH | tests/main/test_task_tool.py | 261 | except Exception: | CODE |
| HIGH | tests/main/test_rate_limiter.py | 721 | except Exception: | CODE |
| HIGH | examples/mcp/claude-code-mcp-single.py | 102 | except Exception: | CODE |
| HIGH | langroid/__init__.py | 105 | except ImportError: | CODE |
| HIGH | langroid/embedding_models/base.py | 35 | except Exception: | CODE |
| HIGH | langroid/language_models/client_cache.py | 438 | except Exception: | CODE |
| HIGH | langroid/language_models/openai_gpt.py | 782 | except Exception: | CODE |
| HIGH | langroid/language_models/openai_gpt.py | 2785 | except StopIteration: | CODE |
| HIGH | langroid/language_models/openai_gpt.py | 2889 | except StopAsyncIteration: | CODE |
| HIGH | langroid/agent/task.py | 2121 | except Exception: | CODE |
| HIGH | langroid/agent/task.py | 2131 | except Exception: | CODE |
| HIGH | langroid/agent/xml_tool_message.py | 16 | except ImportError: | CODE |
| HIGH | langroid/agent/tools/mcp/fastmcp_client.py | 898 | except Exception: | CODE |
| HIGH | langroid/agent/tools/mcp/fastmcp_client.py | 295 | except Exception: | CODE |
| HIGH | langroid/agent/tools/mcp/fastmcp_client.py | 302 | except Exception: | CODE |
| HIGH | langroid/agent/tools/mcp/fastmcp_client.py | 325 | except Exception: | CODE |
| HIGH | langroid/agent/tools/mcp/fastmcp_client.py | 333 | except Exception: | CODE |
| HIGH | langroid/agent/special/__init__.py | 58 | except ImportError: | CODE |
| HIGH | langroid/agent/special/doc_chat_agent.py | 156 | except Exception: | CODE |
| HIGH | langroid/agent/special/doc_chat_agent.py | 907 | except Exception: | CODE |
| HIGH | langroid/agent/special/sql/__init__.py | 16 | except ImportError: | CODE |
| HIGH | langroid/vector_store/qdrantdb.py | 42 | except Exception: | CODE |
| HIGH | langroid/vector_store/qdrantdb.py | 399 | except ValueError: | CODE |
| HIGH | langroid/vector_store/chromadb.py | 182 | except Exception: | CODE |
| HIGH | langroid/vector_store/__init__.py | 73 | except ImportError: | CODE |
| HIGH | langroid/parsing/url_loader.py | 158 | except ImportError: | CODE |
| HIGH | langroid/parsing/__init__.py | 57 | except ImportError: | CODE |
| HIGH | langroid/parsing/parse_json.py | 60 | except json.JSONDecodeError: | CODE |
| HIGH | langroid/parsing/parse_json.py | 68 | except (ValueError, SyntaxError): | CODE |
| HIGH | langroid/parsing/parse_json.py | 169 | except Exception: | CODE |
| HIGH | langroid/parsing/parse_json.py | 81 | except yaml.YAMLError: | CODE |
| HIGH | langroid/parsing/parse_json.py | 108 | except yaml.YAMLError: | CODE |
| HIGH | langroid/parsing/document_parser.py | 243 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/langroid/skills/patterns/run-batch-tasks.md | 160 | except Exception as e: | CODE |
| LOW | …groid/skills/patterns/agent-tool-handler-with-state.md | 67 | except Exception as e: | CODE |
| LOW | …groid/skills/patterns/agent-tool-handler-with-state.md | 127 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 197 | except Exception: | CODE |
| LOW | tests/main/test_quiet_mode.py | 35 | except Exception: | CODE |
| LOW | tests/main/test_concurrent_rag_simple.py | 281 | except Exception as e: | CODE |
| LOW | tests/main/test_concurrent_rag_simple.py | 289 | except Exception as e: | CODE |
| LOW | tests/main/test_arangodb_chat_agent.py | 31 | except Exception: | CODE |
| LOW | tests/main/test_arangodb_chat_agent.py | 151 | except Exception as e: | CODE |
| MEDIUM | tests/main/test_arangodb_chat_agent.py | 152 | print(f"Error inserting data: {e}") | CODE |
| LOW | tests/main/test_arangodb_chat_agent.py | 452 | except Exception as e: | STRING |
| LOW | tests/main/test_openai_http_client.py | 266 | except Exception as e: | CODE |
| LOW | tests/main/test_openai_http_client.py | 307 | except Exception as e: | CODE |
| LOW | tests/main/test_openai_http_client.py | 334 | except Exception as e: | CODE |
| LOW | tests/main/test_openai_http_client.py | 355 | except Exception: | CODE |
| LOW | tests/main/test_mcp_tools.py | 1122 | except Exception: | CODE |
| LOW | tests/main/test_mcp_tools.py | 838 | except Exception as e: | STRING |
| LOW | tests/main/test_md_html_parser.py | 318 | except Exception: | CODE |
| LOW | tests/main/test_vertexai_adc.py | 149 | except Exception as e: # noqa: BLE001 | CODE |
| MEDIUM | tests/main/test_vertexai_adc.py | 146 | def worker() -> None: | CODE |
| LOW | tests/main/test_web_search_tools.py | 80 | except Exception as e: | CODE |
| LOW | tests/main/test_vector_stores.py | 496 | except Exception as exc: | CODE |
| MEDIUM | tests/main/test_openai_gpt_client_cache.py | 222 | def get_client(): | CODE |
| LOW | tests/main/test_openai_gpt_client_cache.py | 625 | except Exception as e: | CODE |
| LOW | tests/main/test_task_tool.py | 261 | except Exception: | STRING |
| LOW | tests/main/test_neo4j_chat_agent.py | 28 | except Exception: | CODE |
| LOW | tests/main/test_neo4j_chat_agent.py | 64 | except Exception as e: | CODE |
| LOW | tests/main/test_neo4j_chat_agent.py | 91 | except Exception as e: | CODE |
| LOW | tests/main/test_rate_limiter.py | 721 | except Exception: | CODE |
| LOW | tests/main/test_global_settings.py | 109 | except Exception as e: | CODE |
| LOW | tests/main/mcp/weather-server-python/weather.py | 22 | except Exception: | CODE |
| LOW | tests/main/mcp/weather-server-python/weather.py | 44 | except Exception: | CODE |
| LOW | docs/notes/portkey.md | 277 | except Exception: | CODE |
| LOW | examples/portkey/portkey_multi_provider.py | 81 | except Exception as e: | CODE |
| LOW | examples/portkey/portkey_multi_provider.py | 144 | except Exception as e: | CODE |
| LOW⚡ | examples/portkey/portkey_multi_provider.py | 174 | except Exception as e: | CODE |
| LOW⚡ | examples/portkey/portkey_multi_provider.py | 184 | except Exception as e: | CODE |
| LOW⚡ | examples/portkey/portkey_multi_provider.py | 194 | except Exception as e: | CODE |
| LOW | examples/portkey/portkey_advanced_features.py | 166 | except Exception as e: | CODE |
| LOW | examples/portkey/portkey_advanced_features.py | 203 | except Exception as e: | CODE |
| LOW | examples/portkey/portkey_basic_chat.py | 58 | except Exception as e: | CODE |
| LOW | examples/portkey/portkey_basic_chat.py | 107 | except Exception as e: | CODE |
| LOW | examples/chainlit/dependency_chatbot.py | 194 | except Exception as e: | STRING |
| MEDIUM⚡ | examples/docqa/crawl4ai_examples.py | 95 | print("Error: Failed to parse the extracted content as JSON.") | CODE |
| MEDIUM | examples/docqa/crawl4ai_examples.py | 281 | print(f"Error parsing LLM output JSON: {e}") | CODE |
| LOW | examples/multi-agent-debate/models.py | 65 | except Exception as e: | CODE |
| LOW | examples/multi-agent-debate/chainlit_utils.py | 173 | except Exception as e: | CODE |
| LOW⚡ | examples/basic/done_sequences_example.py | 47 | except Exception as e: | CODE |
| MEDIUM | examples/basic/done_sequences_example.py | 43 | def handle(self) -> str: | CODE |
| LOW | examples/basic/python-code-exec-tool.py | 47 | except Exception as e: | CODE |
| MEDIUM | examples/basic/python-code-exec-tool.py | 48 | print(f"Error: {str(e)}") | CODE |
| LOW | examples/mcp/claude-code-mcp-single.py | 102 | except Exception: | CODE |
| LOW | examples/kg-chat/dependency_chatbot.py | 202 | except Exception as e: | STRING |
| LOW | langroid/embedding_models/base.py | 35 | except Exception: | CODE |
| LOW | langroid/language_models/rate_limiter.py | 605 | except Exception: | CODE |
| LOW | langroid/language_models/utils.py | 96 | except Exception as e: | CODE |
| LOW | langroid/language_models/utils.py | 178 | except Exception as e: | CODE |
| LOW | langroid/language_models/client_cache.py | 438 | except Exception: | CODE |
| LOW | langroid/language_models/openai_gpt.py | 782 | except Exception: | CODE |
| LOW | langroid/language_models/openai_gpt.py | 1915 | except Exception as e: | CODE |
| 99 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/multi-agent-debate/config.py | 51 | Creates an LLM (Language Learning Model) configuration based on the selected model. This function uses the use | STRING |
| HIGH | examples/multi-agent-debate/models.py | 35 | Load and validate system messages from a JSON file. Reads the JSON file containing system messages, maps each entry | STRING |
| HIGH | examples/multi-agent-debate/utils.py | 141 | Prompt the user to select a debate topic and sets up the respective side. This function handles the user interactio | STRING |
| HIGH | examples/multi-agent-debate/chainlit_utils.py | 254 | Prompt the user to select a debate topic and sets up the respective side. Args: system_messages (System | STRING |
| HIGH | examples/basic/drug-outcomes.py | 59 | Extracts an integer from a string that contains a number. Args: x (str): The input string containing t | STRING |
| HIGH | examples/data-qa/sql-chat/sql_chat.py | 55 | Create an empty descriptions JSON file for SQLAlchemy tables. This function inspects the database, generates a | STRING |
| HIGH | issues/issue-919-llamacpp-embeddings.md | 131 | Extract embedding vector from llama.cpp response. Handles multiple response formats: 1. Native /embedding: | STRING |
| HIGH | langroid/embedding_models/models.py | 490 | Extract embedding vector from llama.cpp response. Handles multiple response formats: 1. Native | STRING |
| HIGH | langroid/language_models/openai_gpt.py | 463 | Validate a GCP project id or region before it is spliced into a URL. Applied at every entry point -- the `VertexAIC | STRING |
| HIGH | langroid/utils/system.py | 214 | Resolve ``user_path`` relative to ``base_dir`` and ensure the result stays within ``base_dir`` (a path-traversa | STRING |
| HIGH | langroid/utils/system.py | 296 | Read the contents of a file. Args: path (str): The path to the file to be read. line_numbers ( | STRING |
| HIGH | langroid/agent/xml_tool_message.py | 147 | Extracts field values from an XML-formatted string. Args: formatted_string (str): The XML- | STRING |
| HIGH | langroid/agent/done_sequence_parser.py | 22 | Parse a string pattern or return existing DoneSequence unchanged. Args: sequence: Either a DoneSequence obj | STRING |
| HIGH | langroid/agent/done_sequence_parser.py | 48 | Parse a string pattern into a list of AgentEvent objects. Pattern format: - Single letter codes: T, A, L, U | STRING |
| HIGH | langroid/agent/done_sequence_parser.py | 116 | Parse a single event token into an AgentEvent. Args: token: Single event token (e.g., "T", "T[calc]", "C[qu | STRING |
| HIGH | langroid/agent/special/neo4j/neo4j_chat_agent.py | 389 | Retrieves the schema of a Neo4j graph database. Args: msg (GraphSchemaTool): An instance o | STRING |
| HIGH | langroid/vector_store/lancedb.py | 149 | NOTE: NOT USED, but leaving it here as it may be useful. Create a subclass of LanceModel with fields: | STRING |
| HIGH | langroid/parsing/repo_loader.py | 237 | Get the file type of a file name. Args: name: name of file, can be "a", "a.b", or ".b" | STRING |
| HIGH | langroid/parsing/url_loader.py | 258 | Create a crawler instance based on configuration type. Args: config: Configuration for the crawler | STRING |
| HIGH | langroid/parsing/url_loader.py | 621 | Load pages, retaining successful results when another page fails. Args: urls: Page URLs, or seed UR | STRING |
| HIGH | langroid/parsing/url_loader.py | 753 | Crawl the given URLs using Exa SDK. Args: urls: List of URLs to crawl Returns: | STRING |
| HIGH | langroid/parsing/table_loader.py | 8 | Reads tabular data from a file or URL and returns a pandas DataFrame. The separator is auto-detected if not spe | STRING |
| HIGH | langroid/parsing/urls.py | 20 | Fetch content from the given URL and save it to a temporary local file. Args: url (str): The URL of th | STRING |
| HIGH | langroid/parsing/document_url.py | 48 | Fetch a URL with timeouts and bounded streamed consumption. Args: url: HTTP(S) document URL. connec | STRING |
| HIGH | langroid/parsing/file_attachment.py | 119 | Create a FileAttachment from either a local file path or a URL. Args: path: Path to the file or URL | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/extras/test_doc_chat_agent_llamacpp.py | 129 | logger = logging.getLogger(__name__) | STRING |
| LOW | examples/chainlit/chat-search-rag.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/chainlit/chat-search.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/docqa/chat_search.py | 54 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/multi-agent-debate/chainlit_utils.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/basic/multi-agent-medical.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/basic/chat-persist.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/basic/planner-workflow-spawn.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/basic/planner-workflow.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/basic/planner-workflow-simple.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/kg-chat/chat-arangodb.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/kg-chat/chat-arangodb-igvf.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/extract/pdf-json.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/extract/pdf-json-flex.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/extract/pdf-json-no-parse.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/data-qa/sql-chat/utils.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/data-qa/sql-chat/sql_chat.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/__init__.py | 56 | __all__ = [ | CODE |
| LOW | langroid/embedding_models/__init__.py | 26 | __all__ = [ | CODE |
| LOW | langroid/language_models/rate_limiter.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/language_models/__init__.py | 37 | __all__ = [ | CODE |
| LOW | langroid/language_models/azure_openai.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/language_models/utils.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/language_models/model_info.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/language_models/httpx_compat.py | 63 | __all__ = ["HTTPX_MODULE_NAME", "Timeout", "import_httpx", "missing_httpx_message"] | CODE |
| LOW | langroid/language_models/base.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/language_models/prompt_formatter/__init__.py | 9 | __all__ = [ | CODE |
| LOW | …d/language_models/prompt_formatter/llama2_formatter.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | …groid/language_models/prompt_formatter/hf_formatter.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/language_models/prompt_formatter/base.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/utils/configuration.py | 70 | def update_global_settings(cfg: BaseSettings, keys: List[str]) -> None: | CODE |
| LOW | langroid/utils/configuration.py | 88 | def set_global(key_vals: Settings) -> None: | CODE |
| LOW | langroid/utils/configuration.py | 134 | def set_env(settings_instance: BaseSettings) -> None: | CODE |
| LOW | langroid/utils/system.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/utils/globals.py | 42 | def set_values(cls: Type[T], **kwargs: Dict[str, Any]) -> None: | CODE |
| LOW | langroid/utils/pydantic_utils.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/utils/__init__.py | 10 | __all__ = [ | CODE |
| LOW | langroid/utils/types.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/utils/git_utils.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/utils/algorithms/__init__.py | 3 | __all__ = ["graph"] | CODE |
| LOW | langroid/utils/output/citations.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/utils/output/__init__.py | 12 | __all__ = [ | CODE |
| LOW | langroid/utils/output/status.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/agent/task.py | 66 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/agent/task.py | 537 | def _set_alive(self) -> None: | CODE |
| LOW | langroid/agent/task.py | 1453 | def _update_no_answer_vars(self, result: ChatDocument) -> None: | CODE |
| LOW | langroid/agent/task.py | 2321 | def set_color_log(self, enable: bool = True) -> None: | CODE |
| LOW | langroid/agent/__init__.py | 22 | __all__ = [ | CODE |
| LOW | langroid/agent/base.py | 73 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/agent/base.py | 255 | def update_dialog(self, prompt: str, output: str) -> None: | CODE |
| LOW | langroid/agent/chat_agent.py | 66 | logger = logging.getLogger(__name__) | CODE |
| LOW | langroid/agent/chat_agent.py | 197 | def _set_fn_or_tools(self) -> None: | CODE |
| LOW | langroid/agent/chat_agent.py | 431 | def set_system_message(self, msg: str) -> None: | CODE |
| LOW | langroid/agent/chat_agent.py | 437 | def set_user_message(self, msg: str) -> None: | CODE |
| LOW | langroid/agent/chat_agent.py | 495 | def update_history(self, message: str, response: str) -> None: | CODE |
| LOW | langroid/agent/chat_agent.py | 820 | def update_last_message(self, message: str, role: str = Role.USER) -> None: | CODE |
| LOW⚡ | langroid/agent/chat_agent.py | 1102 | def _update_tool_instructions(self) -> None: | STRING |
| LOW | langroid/agent/tools/__init__.py | 20 | __all__ = [ | CODE |
| LOW | langroid/agent/tools/mcp/__init__.py | 13 | __all__ = [ | CODE |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main/test_no_shared_default_config.py | 68 | CODE | |
| LOW | tests/main/test_task_tool.py | 182 | CODE | |
| LOW | tests/main/test_tool_messages.py | 857 | CODE | |
| LOW | examples/docqa/crawl4ai_examples.py | 405 | CODE | |
| LOW | examples/docqa/chat_search.py | 107 | CODE | |
| LOW | examples/docqa/rag-concurrent.py | 132 | CODE | |
| LOW | …amples/basic/multi-agent-search-critic-no-orch/main.py | 56 | CODE | |
| LOW | …amples/basic/multi-agent-search-critic-no-orch/main.py | 93 | CODE | |
| LOW | examples/kg-chat/csv-chat.py | 48 | CODE | |
| LOW | langroid/embedding_models/remote_embeds.py | 71 | CODE | |
| LOW | langroid/embedding_models/remote_embeds.py | 84 | CODE | |
| LOW | langroid/embedding_models/models.py | 611 | CODE | |
| LOW | langroid/embedding_models/models.py | 118 | CODE | |
| LOW | langroid/embedding_models/models.py | 487 | CODE | |
| LOW | langroid/embedding_models/base.py | 40 | CODE | |
| LOW | langroid/language_models/client_cache.py | 422 | CODE | |
| LOW | langroid/language_models/base.py | 297 | CODE | |
| LOW | langroid/language_models/base.py | 443 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 795 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 1515 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 1680 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 1848 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 2719 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 2815 | CODE | |
| LOW | langroid/utils/logging.py | 200 | CODE | |
| LOW | langroid/utils/system.py | 251 | CODE | |
| LOW | langroid/utils/pydantic_utils.py | 104 | CODE | |
| LOW | langroid/utils/pydantic_utils.py | 165 | CODE | |
| LOW | langroid/utils/types.py | 24 | CODE | |
| LOW | langroid/utils/types.py | 98 | CODE | |
| LOW | langroid/utils/html_logger.py | 516 | CODE | |
| LOW | langroid/utils/git_utils.py | 42 | CODE | |
| LOW | langroid/utils/algorithms/graph.py | 11 | CODE | |
| LOW | langroid/utils/algorithms/graph.py | 53 | CODE | |
| LOW | langroid/utils/output/citations.py | 49 | CODE | |
| LOW | langroid/agent/task.py | 613 | CODE | |
| LOW | langroid/agent/task.py | 695 | CODE | |
| LOW | langroid/agent/task.py | 794 | CODE | |
| LOW | langroid/agent/task.py | 983 | CODE | |
| LOW | langroid/agent/task.py | 1808 | CODE | |
| LOW | langroid/agent/task.py | 2406 | CODE | |
| LOW | langroid/agent/task.py | 2453 | CODE | |
| LOW | langroid/agent/xml_tool_message.py | 330 | CODE | |
| LOW | langroid/agent/xml_tool_message.py | 482 | CODE | |
| LOW | langroid/agent/xml_tool_message.py | 530 | CODE | |
| LOW | langroid/agent/xml_tool_message.py | 343 | CODE | |
| LOW | langroid/agent/xml_tool_message.py | 493 | CODE | |
| LOW | langroid/agent/batch.py | 84 | CODE | |
| LOW | langroid/agent/batch.py | 243 | CODE | |
| LOW | langroid/agent/batch.py | 347 | CODE | |
| LOW | langroid/agent/batch.py | 386 | CODE | |
| LOW | langroid/agent/chat_document.py | 259 | CODE | |
| LOW | langroid/agent/chat_document.py | 459 | CODE | |
| LOW | langroid/agent/tool_message.py | 65 | CODE | |
| LOW | langroid/agent/tool_message.py | 337 | CODE | |
| LOW | langroid/agent/done_sequence_parser.py | 45 | CODE | |
| LOW | langroid/agent/done_sequence_parser.py | 113 | CODE | |
| LOW | langroid/agent/base.py | 264 | CODE | |
| LOW | langroid/agent/base.py | 325 | CODE | |
| LOW | langroid/agent/base.py | 772 | CODE | |
| 49 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/conftest.py | 44 | # real key, and this suite drives multi-agent pipelines with many | COMMENT |
| MEDIUM⚡ | tests/main/test_context_truncation.py | 149 | # Use a context window large enough for the buffer but small enough to need | COMMENT |
| MEDIUM | tests/main/test_vector_stores.py | 437 | # Test context window retrieval | COMMENT |
| MEDIUM | tests/main/test_vector_stores.py | 575 | # Test context window retrieval | COMMENT |
| MEDIUM | tests/main/test_vector_stores.py | 580 | # single window. The third Giraffe-match context window will not overlap with | COMMENT |
| MEDIUM | docs/FAQ.md | 309 | ## How can I improve `DocChatAgent` (RAG) latency? | STRING |
| MEDIUM | docs/blog/posts/langroid-lancedb.md | 134 | ## Retrieval Augmented Generation (RAG) and Vector Databases | STRING |
| MEDIUM | docs/blog/posts/multi-agent-debate.md | 60 | #### RAG Q&A Agent: | COMMENT |
| MEDIUM | docs/notes/tool-origin-taint.md | 16 | Issue #1035 identified the remaining *laundering* hole: orchestration code that | CODE |
| MEDIUM | docs/notes/tool-origin-taint.md | 116 | - PR #1034: `tools_from_agent` preserves multi-agent handoffs | CODE |
| MEDIUM | docs/notes/chunking.md | 113 | # Configure context window | COMMENT |
| MEDIUM | docs/notes/llama-cpp-embeddings.md | 44 | dims=768, # Match the dimensions of your embedding model | CODE |
| MEDIUM | docs/examples/guide.md | 59 | ### Document-chat examples, or RAG (Retrieval Augmented Generation) | COMMENT |
| MEDIUM | docs/quick-start/two-agent-chat-num.md | 114 | ## Logs of multi-agent interactions | STRING |
| MEDIUM | docs/quick-start/chat-agent-tool.md | 83 | # Compiled to few-shot examples sent along with the tool instructions. | STRING |
| MEDIUM | docs/tutorials/langroid-tour.md | 125 | ## Chat with a document (RAG) | STRING |
| MEDIUM | examples/langdb/README.md | 16 | ### 1. LangDB Chat Agent with Document RAG (`langdb_chat_agent_docs.py`) | COMMENT |
| MEDIUM | examples/chainlit/.chainlit/config.toml | 65 | # Hide the chain of thought details from the user in the UI. | COMMENT |
| MEDIUM | examples/docqa/rag-local-simple.py | 60 | # using SentenceTransformers/BAAI/bge-large-en-v1.5 embedding model | COMMENT |
| MEDIUM | examples/docqa/chat.py | 128 | dims=768, # Change this to match the dimensions of your embedding model | CODE |
| MEDIUM | examples/docqa/chat-multi-extract-local.py | 245 | # (2) RAG AGENT: try to answer a given question based on documents | STRING |
| MEDIUM | examples/docqa/chat-multi-extract-local.py | 277 | # from the RAG agent | STRING |
| MEDIUM | examples/docqa/chat-multi-extract-local.py | 329 | # Questions -> Answers using RAG | STRING |
| MEDIUM | examples/basic/fn-call-local-numerical.py | 83 | # Used to provide few-shot examples in the system prompt | COMMENT |
| MEDIUM | examples/basic/fn-call-local-numerical.py | 207 | # and few-shot examples into the system message | STRING |
| MEDIUM | examples/basic/fn-call-local-simple.py | 73 | # Used to provide few-shot examples in the system prompt | COMMENT |
| MEDIUM | examples/basic/fn-call-local-simple.py | 138 | # and few-shot examples (specified in the tool defn above) into the system message | STRING |
| MEDIUM | examples/basic/1-agent-3-tools.py | 27 | # Examples that will be compiled into few-shot examples for the LLM. | COMMENT |
| MEDIUM | examples/basic/text-to-structured.py | 85 | # Used to provide few-shot examples in the system prompt | STRING |
| MEDIUM | examples/basic/text-to-structured.py | 133 | # and few-shot examples (specified in the tool defn above) into the system message | STRING |
| MEDIUM | examples/basic/1-agent-3-tools-address-user.py | 30 | # Examples that will be compiled into few-shot examples for the LLM. | COMMENT |
| MEDIUM | .chainlit/config.toml | 65 | # Hide the chain of thought details from the user in the UI. | COMMENT |
| MEDIUM | issues/issue-919-llamacpp-embeddings.md | 223 | dims=768, # Match your embedding model dimensions | CODE |
| MEDIUM | issues/issue-919-llamacpp-embeddings.md | 238 | # For dedicated embedding model (RECOMMENDED) | COMMENT |
| MEDIUM | issues/20251010-concurrent-rag-status.md | 1 | # Concurrent DocChat RAG – Current Status (2025-10-10) | COMMENT |
| MEDIUM | langroid/mytypes.py | 52 | window_ids: List[str] = [] # for RAG: ids of chunks around this one | CODE |
| MEDIUM | langroid/language_models/model_info.py | 165 | max_cot_tokens: int = 0 # max chain of thought (thinking) tokens where applicable | CODE |
| MEDIUM | langroid/agent/chat_document.py | 61 | # multi-agent handoff (a Task then relabels sender -> USER). Lets handle-only | COMMENT |
| MEDIUM | langroid/agent/base.py | 1389 | # across a multi-agent handoff), not raw user input -- safe to | STRING |
| MEDIUM | langroid/agent/base.py | 1717 | # check whether there are multiple orchestration-tools (e.g. DoneTool etc), | STRING |
| MEDIUM | langroid/agent/base.py | 1772 | # Cannot support multi-tool results containing orchestration strings! | STRING |
| MEDIUM | langroid/agent/base.py | 1818 | # agent's or, in multi-agent setups, another agent's), not by raw user | STRING |
| MEDIUM | langroid/agent/special/doc_chat_agent.py | 299 | rerank_after_adding_context: bool = True # rerank after adding context window? | STRING |
| MEDIUM | langroid/agent/special/doc_chat_agent.py | 1392 | # Do not add context window when there are other fields besides just | STRING |
| MEDIUM | langroid/agent/special/lance_rag/query_planner_agent.py | 195 | # since this Agent seeks feedback only after receiving RAG answer. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/main/test_openai_json_arguments.py | 19 | '{"enabled": true, "value": null}', | CODE |
| HIGH | tests/main/test_mcp_tools.py | 1956 | # Optional[int] (anyOf including null) -> Union[int, None] | COMMENT |
| HIGH | tests/main/test_mcp_nullable_payloads.py | 49 | # null, which is what `exclude_none=True` always did. | COMMENT |
| HIGH | tests/main/test_mcp_nullable_payloads.py | 98 | # A cycle and a dangling $ref both fall back to dropping the null, | COMMENT |
| HIGH | tests/main/test_mcp_nullable_payloads.py | 123 | await tool.model_validate_json('{"value": null}').handle_async() == "null" | CODE |
| HIGH | tests/main/test_json.py | 118 | ('{"key": null}', {"key": None}), | CODE |
| HIGH | tests/main/test_json.py | 137 | "null": null, | STRING |
| HIGH⚡ | tests/main/test_json.py | 235 | '{"key": undefined}', # JavaScript-style undefined (gets repaired) | CODE |
| HIGH⚡ | tests/main/test_json.py | 239 | '{"key": null, "key2": }', # Trailing comma with no value | CODE |
| HIGH | tests/main/test_lance_doc_chat_agent.py | 381 | That reply is accepted when non-null, and because `llm_response` sets | STRING |
| HIGH | tests/extras/test_csv_kg_chat.py | 64 | assert nodes_query_df.equals(df) | CODE |
| HIGH | langroid/utils/html_logger.py | 434 | if (savedState !== null) {{ | CODE |
| HIGH | langroid/utils/html_logger.py | 453 | if (contentElement && toggleElement) {{ | CODE |
| HIGH | langroid/agent/special/lance_rag/query_planner_agent.py | 241 | non-null, and since `llm_response` above sets `expecting_query_plan` | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main/test_task.py | 1143 | # Set caller to simulate subtask scenario | COMMENT |
| LOW | tests/main/test_openai_http_client.py | 15 | # Check if the httpx family matching the installed openai SDK is available | COMMENT |
| LOW | tests/main/test_git_utils.py | 92 | # Check if the file was actually committed | COMMENT |
| LOW | tests/main/test_task_optional_logger.py | 26 | # Check if loggers were created | COMMENT |
| LOW⚡ | tests/main/test_task_optional_logger.py | 58 | # Check if loggers were NOT created | COMMENT |
| LOW | tests/main/test_task_tool.py | 248 | # Check if current message is from TaskTool | STRING |
| LOW | tests/main/test_pdf_utils.py | 16 | # Check if the pages are split correctly | COMMENT |
| LOW⚡ | tests/main/test_file_tools.py | 71 | # Check if the file was created | STRING |
| LOW⚡ | tests/main/test_file_tools.py | 75 | # Check if the content was written correctly | STRING |
| LOW⚡ | tests/main/test_file_tools.py | 79 | # Check if the file was committed to the git repo | STRING |
| LOW | tests/main/test_file_tools.py | 118 | # Check if all files are in the repo | STRING |
| LOW | tests/main/test_file_tools.py | 213 | # Check if each line of content is in the result, ignoring line numbers | STRING |
| LOW | examples/chainlit/dependency_chatbot.py | 133 | # Check if node has been added before | STRING |
| LOW | examples/docqa/rag-concurrent.py | 377 | # Display results | COMMENT |
| LOW | examples/kg-chat/dependency_chatbot.py | 141 | # Check if node has been added before | STRING |
| LOW | langroid/embedding_models/models.py | 187 | # Check if using LangDB | COMMENT |
| LOW | langroid/embedding_models/models.py | 514 | # Check if it's [floats] | COMMENT |
| LOW | langroid/embedding_models/models.py | 538 | # Check if it's [floats] | COMMENT |
| LOW | langroid/embedding_models/models.py | 542 | # Check if it's [[floats]] | COMMENT |
| LOW | langroid/language_models/utils.py | 75 | # Increment retries | COMMENT |
| LOW | langroid/language_models/utils.py | 78 | # Check if max retries has been reached | COMMENT |
| LOW | langroid/language_models/utils.py | 158 | # Increment retries | COMMENT |
| LOW | langroid/language_models/utils.py | 161 | # Check if max retries has been reached | COMMENT |
| LOW | langroid/language_models/client_cache.py | 430 | # Check if close is a coroutine function (async) | COMMENT |
| LOW | langroid/utils/pydantic_utils.py | 478 | # Check if metadata_cols is empty | COMMENT |
| LOW | langroid/utils/git_utils.py | 103 | # Check if we're on the master branch | COMMENT |
| LOW | langroid/agent/task.py | 2063 | # Check if task should be done if message contains a tool | COMMENT |
| LOW | langroid/agent/batch.py | 677 | # Check if the method is async | COMMENT |
| LOW | langroid/agent/chat_agent.py | 1436 | # Check if tool class was attached to the exception | STRING |
| LOW | langroid/agent/chat_agent.py | 2477 | # Check if callback accepts 'reasoning' param or **kwargs | STRING |
| LOW | langroid/agent/special/doc_chat_agent.py | 201 | # Check if module exists in sys.path | STRING |
| LOW | langroid/agent/special/table_chat_agent.py | 265 | # Return the result | STRING |
| LOW | langroid/agent/special/neo4j/neo4j_chat_agent.py | 259 | # Check if query contains database/collection creation patterns | STRING |
| LOW | langroid/agent/special/arangodb/arangodb_agent.py | 231 | # Check if any non-system collection has data | STRING |
| LOW | langroid/vector_store/weaviatedb.py | 296 | # Check if the name now meets the criteria | STRING |
| LOW | langroid/parsing/md_parser.py | 93 | # Check if the line is a heading | COMMENT |
| LOW | langroid/parsing/md_parser.py | 369 | # Check if this is a header-only node. | COMMENT |
| LOW | langroid/parsing/md_parser.py | 437 | # Check if this is a header node (content matches last item in path) | COMMENT |
| LOW | langroid/parsing/md_parser.py | 471 | # Check if the node is "heading-only" and has children | COMMENT |
| LOW | langroid/parsing/md_parser.py | 494 | # Check if we can roll up everything (node + children) in a single chunk | COMMENT |
| LOW | langroid/parsing/urls.py | 77 | # Check if the user wants to exit the loop. | COMMENT |
| LOW | langroid/parsing/document_parser.py | 240 | # Check if the MIME type is not a text type | COMMENT |
| LOW | langroid/parsing/file_attachment.py | 139 | # Check if it's a URL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 341 | "mkdocs-section-index<1.0.0,>=0.3.5", | COMMENT |
| LOW | tests/main/test_tool_origin_taint.py | 781 | COMMENT | |
| LOW | tests/main/test_md_parser.py | 941 | ), f"Found repeated overlap in chunk {i+2} that belonged to chunk {i}!" | COMMENT |
| LOW | tests/main/test_task_lineage_rewind.py | 161 | COMMENT | |
| LOW | tests/main/test_task_lineage_rewind.py | 321 | ) | COMMENT |
| LOW | tests/main/test_vertexai_isolation.py | 701 | leak. Every field must therefore be either dropped or listed here as | COMMENT |
| LOW | tests/main/test_task_run_polymorphic.py | 201 | assert result[0].answer == 6 | COMMENT |
| LOW | tests/main/test_tool_messages.py | 1481 | # Strict fallback disables the default arguments, but the LLM | COMMENT |
| LOW | tests/main/test_pandas_utils.py | 81 | @pytest.mark.parametrize("expr,msg", BLOCK_WITH_MSG) | COMMENT |
| LOW | examples/portkey/requirements.txt | 1 | # Requirements for Portkey examples | COMMENT |
| LOW | examples/chainlit/.chainlit/config.toml | 61 | COMMENT | |
| LOW | examples/chainlit/.chainlit/config.toml | 81 | COMMENT | |
| LOW | examples/docqa/rag-local-simple.py | 41 | ) | COMMENT |
| LOW | examples/summarize/summ.py | 41 | # Create the llm config object. | COMMENT |
| LOW | examples/basic/chat-local.py | 21 | # Notes: | COMMENT |
| LOW | examples/basic/fn-call-local-simple.py | 101 | timeout=45, | COMMENT |
| LOW | examples/kg-chat/chat-arangodb.py | 181 | COMMENT | |
| LOW | examples/kg-chat/chat-arangodb-igvf.py | 141 | # You can have this in a loop with the user, like so: | COMMENT |
| LOW | scripts/fix-pydantic-imports.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/workflows/pytest.yml | 1 | name: Pytest | COMMENT |
| LOW | .github/workflows/pytest.yml | 241 | # path: ~/.local | COMMENT |
| LOW | .github/workflows/pytest-subset.yml | 1 | name: Pytest subset (manual) | COMMENT |
| LOW | .chainlit/config.toml | 61 | COMMENT | |
| LOW | .chainlit/config.toml | 81 | COMMENT | |
| LOW | langroid/language_models/rate_limiter.py | 201 | enabled: bool = False | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 541 | # Fields that must NOT be carried over from an `OPENAI_`-prefixed config onto | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 661 | "meant for Vertex AI.", | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 861 | # falls through to the generic branch and quietly talks to | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 881 | # prefix and slipped past both branches -- then the split turned it | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 921 | # replaced self.config above, and the original still holds the | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 2761 | limiter.observe_rate_limit_error(headers) | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 3081 | reasoning = message.get("reasoning_content", "") | COMMENT |
| LOW | langroid/utils/pydantic_utils.py | 581 | metadata (List[str]): A list of column names containing metadata; | COMMENT |
| LOW | langroid/agent/task.py | 1281 | and not self.human_tried | COMMENT |
| LOW | langroid/agent/task.py | 1481 | # pending_sender is of type Responder, | COMMENT |
| LOW | langroid/agent/task.py | 2021 | m = indices[-1] if indices.size > 0 else -1 | COMMENT |
| LOW | langroid/agent/chat_document.py | 61 | # multi-agent handoff (a Task then relabels sender -> USER). Lets handle-only | COMMENT |
| LOW | langroid/agent/chat_document.py | 81 | cached: bool = False | COMMENT |
| LOW | langroid/agent/chat_document.py | 161 | # (e.g. <thinking>...</thinking>). Only populated when reasoning was | COMMENT |
| LOW | langroid/agent/chat_document.py | 481 | # inline thought signatures (e.g. <thinking>...</thinking>) in | COMMENT |
| LOW | langroid/agent/tool_message.py | 141 | # JSON, and it survives copy.deepcopy (hence ChatDocument.deepcopy). | COMMENT |
| LOW | langroid/agent/base.py | 1801 | tools = self.get_tool_messages(msg) | COMMENT |
| LOW | langroid/agent/base.py | 1961 | # "request": "square", | COMMENT |
| LOW | langroid/agent/base.py | 2101 | # LLM-AUTHORED tool results (e.g. a custom llm_response returning a | COMMENT |
| LOW | langroid/agent/chat_agent.py | 281 | # This variable is not None and equals a `ToolMessage` T, if and only if: | COMMENT |
| LOW | langroid/agent/chat_agent.py | 2001 | # Account for the warning that truncate_message appends | COMMENT |
| LOW | langroid/agent/chat_agent.py | 2041 | # as much content as possible instead of being | COMMENT |
| LOW | langroid/agent/tools/recipient_tool.py | 41 | "to clarify who the message is intended for." | COMMENT |
| LOW | langroid/agent/special/doc_chat_agent.py | 241 | # helps LLM fix citation errors and improve accuracy of follow-up questions. | COMMENT |
| LOW | langroid/agent/special/doc_chat_agent.py | 1561 | # different retrieval methods (semantic, bm25, fuzzy), where the | COMMENT |
| LOW | langroid/agent/special/sql/sql_chat_agent.py | 121 | # access, or other escapes from the database engine. Matched against the raw | COMMENT |
| LOW | langroid/agent/special/sql/sql_chat_agent.py | 321 | use_schema_tools: bool = False | COMMENT |
| LOW | langroid/parsing/urls.py | 261 | # made conditional: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main/test_mcp_tools.py | 411 | recipient__="John Doe", | CODE |
| LOW | tests/main/test_mcp_tools.py | 418 | assert msg.recipient__ == "John Doe" | CODE |
| LOW⚡ | tests/main/test_neo4j_chat_agent.py | 170 | CREATE (p:Person {name: 'John Doe', age: 30}) | CODE |
| LOW⚡ | tests/main/test_neo4j_chat_agent.py | 176 | MATCH (p:Person {name: 'John Doe'}) | CODE |
| LOW⚡ | tests/main/test_neo4j_chat_agent.py | 183 | MATCH (p:Person {name: 'John Doe'}) | CODE |
| LOW⚡ | tests/main/test_pydantic_utils.py | 27 | name="John Doe", age=30, details=DetailsModel(height=180.5, weight=75.0) | CODE |
| LOW⚡ | tests/main/test_pydantic_utils.py | 32 | assert result == {"name": "John Doe"} | CODE |
| LOW⚡ | tests/main/test_pydantic_utils.py | 36 | assert result == {"name": "John Doe", "age": 30, "weight": 75.0} | CODE |
| LOW | tests/main/test_vecstore_env_prefix.py | 277 | monkeypatch.setenv(name, "placeholder") | CODE |
| LOW | tests/main/test_vecstore_env_prefix.py | 302 | monkeypatch.setenv("SOME_FIELD", "placeholder") | CODE |
| LOW⚡ | tests/main/test_object_registry.py | 102 | ObjectRegistry.registry["dummy_id"] = None | CODE |
| LOW⚡ | tests/main/test_object_registry.py | 103 | # Ensure "dummy_id" is in the registry before cleanup | COMMENT |
| LOW⚡ | tests/main/test_object_registry.py | 104 | assert "dummy_id" in ObjectRegistry.registry | CODE |
| LOW⚡ | tests/main/test_object_registry.py | 107 | # "dummy_id" should be removed post cleanup | COMMENT |
| LOW⚡ | tests/main/test_object_registry.py | 108 | assert "dummy_id" not in ObjectRegistry.registry | CODE |
| LOW⚡ | tests/main/test_xml_tool_message.py | 361 | name="John Doe", | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 364 | street="123 Main St", city="Anytown", country="USA" | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 371 | name="Jane Doe", | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 402 | name="Jane Doe", | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 410 | name="John Doe", | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 412 | address=Address(street="123 Main St", city="Anytown", country="USA"), | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 491 | assert parsed.person.name == "John Doe" | STRING |
| LOW⚡ | tests/main/test_xml_tool_message.py | 494 | assert parsed.person.address.street == "123 Main St" | STRING |
| LOW | tests/main/test_xml_tool_message.py | 562 | name="Jane Doe", | STRING |
| LOW | examples/chainlit/.chainlit/translations/pt-BR.json | 53 | "placeholder": "Digite sua mensagem aqui..." | CODE |
| LOW | examples/chainlit/.chainlit/translations/en-US.json | 53 | "placeholder": "Ask, respond, give feedback, or just 'c' for continue..." | CODE |
| LOW | .chainlit/translations/pt-BR.json | 53 | "placeholder": "Digite sua mensagem aqui..." | CODE |
| LOW | .chainlit/translations/en-US.json | 53 | "placeholder": "Ask, respond, give feedback, or just 'c' for continue..." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main/test_table_chat_agent.py | 152 | CODE | |
| LOW | tests/main/test_seltz_search.py | 30 | CODE | |
| LOW | examples/chainlit/multi-agent-nested-tool.py | 47 | CODE | |
| LOW | …mples/chainlit/non-callback/chat-search-no-callback.py | 31 | CODE | |
| LOW | …mples/chainlit/non-callback/chat-search-no-callback.py | 38 | CODE | |
| LOW | examples/chainlit/non-callback/chat-tool-no-callback.py | 38 | CODE | |
| LOW | examples/docqa/chat.py | 53 | CODE | |
| LOW | examples/docqa/rag-concurrent.py | 132 | CODE | |
| LOW | examples/docqa/doc-chunk-enrich.py | 263 | CODE | |
| LOW | examples/basic/fn-call-local-numerical.py | 106 | CODE | |
| LOW | …amples/basic/multi-agent-search-critic/search_agent.py | 130 | CODE | |
| LOW | …asic/multi-agent-search-critic-no-orch/search_agent.py | 130 | CODE | |
| LOW | langroid/embedding_models/protoc/embeddings_pb2_grpc.py | 53 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 1515 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 1680 | CODE | |
| LOW | langroid/language_models/openai_gpt.py | 2155 | CODE | |
| LOW | langroid/agent/task.py | 211 | CODE | |
| LOW | langroid/agent/task.py | 766 | CODE | |
| LOW | langroid/agent/task.py | 780 | CODE | |
| LOW | langroid/agent/task.py | 794 | CODE | |
| LOW | langroid/agent/task.py | 955 | CODE | |
| LOW | langroid/agent/task.py | 969 | CODE | |
| LOW | langroid/agent/task.py | 983 | CODE | |
| LOW | langroid/agent/task.py | 1585 | CODE | |
| LOW | langroid/agent/batch.py | 446 | CODE | |
| LOW | langroid/agent/batch.py | 558 | CODE | |
| LOW | langroid/agent/batch.py | 698 | CODE | |
| LOW | langroid/agent/base.py | 615 | CODE | |
| LOW | langroid/agent/base.py | 882 | CODE | |
| LOW | langroid/agent/base.py | 935 | CODE | |
| LOW | langroid/agent/base.py | 1128 | CODE | |
| LOW | langroid/agent/tools/task_tool.py | 221 | CODE | |
| LOW | langroid/agent/tools/task_tool.py | 261 | CODE | |
| LOW | langroid/agent/tools/mcp/fastmcp_client.py | 195 | CODE | |
| LOW | langroid/agent/special/relevance_extractor_agent.py | 87 | CODE | |
| LOW | langroid/agent/special/relevance_extractor_agent.py | 118 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/blog/posts/malade.md | 111 | ### Step 2: Identifying Drug-Outcome Associations (`DrugOutcomeInfoAgent`) | COMMENT |
| LOW | docs/blog/posts/malade.md | 129 | ### Step 3: Labeling Drug Category-Outcome Associations (`CategoryOutcomeRiskAgent`) | COMMENT |
| LOW⚡ | docs/notes/portkey.md | 433 | # Step 1: Basic Portkey | COMMENT |
| LOW⚡ | docs/notes/portkey.md | 438 | # Step 2: Add caching | COMMENT |
| LOW⚡ | docs/notes/portkey.md | 446 | # Step 3: Add observability | COMMENT |
| LOW⚡ | issues/html-logger-implementation.md | 43 | #### Step 1: Create HTML Logger Foundation | COMMENT |
| LOW⚡ | issues/html-logger-implementation.md | 48 | #### Step 2: Integrate with Task System | COMMENT |
| LOW⚡ | issues/html-logger-implementation.md | 53 | #### Step 3: Implement HTML Generation | COMMENT |
| LOW⚡ | issues/html-logger-implementation.md | 58 | #### Step 4: Add JavaScript Functionality | COMMENT |
| LOW⚡ | langroid/parsing/url_loader.py | 847 | # Step 1: Separate URLs into documents and web pages | COMMENT |
| LOW⚡ | langroid/parsing/url_loader.py | 855 | # Step 2: Process web page URLs asynchronously | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/main/test_doc_chat_agent.py | 277 | # to just use ChatAgent's LLM response - this ensures that the system msg | STRING |
| MEDIUM | tests/main/test_mcp_tools.py | 736 | # Add timeout and robust skipping similar to npx test | STRING |
| MEDIUM | tests/main/test_rate_limiter.py | 489 | # chat_model="" switches off the test harness's global `--m` model | COMMENT |
| LOW⚡ | tests/main/test_json.py | 230 | # Test cases that should not crash, just return "" | COMMENT |
| LOW⚡ | tests/main/test_json.py | 244 | # Should never crash, just return empty string or found value | COMMENT |
| LOW | tests/extras/test_doc_chat_agent_llamacpp.py | 335 | # to just use ChatAgent's LLM response - this ensures that the system msg | STRING |
| MEDIUM | examples/docqa/rag-concurrent.py | 34 | # Use Langroid's built-in run_batch_tasks harness instead of the custom one | STRING |
| LOW | examples/basic/schedule-extract.py | 112 | # from the input text. For this example, we'll just return a placeholder. | STRING |
| LOW | langroid/mytypes.py | 96 | # If parsing fails, just use the original date | COMMENT |
| LOW | langroid/language_models/openai_gpt.py | 940 | # so we can just use `openai.*` methods directly, | STRING |
| LOW | langroid/agent/base.py | 2239 | Copy-on-stamp (#1035): a tool object the framework did not just create | CODE |
| LOW | langroid/agent/chat_agent.py | 925 | # Otherwise just return `no_tool_option` as is: | COMMENT |
| LOW | langroid/agent/tools/mcp/fastmcp_client.py | 819 | # Otherwise, just return the text content | COMMENT |
| LOW | langroid/agent/special/doc_chat_agent.py | 814 | # no filter, so just use the docs passed in | STRING |
| LOW | langroid/agent/special/doc_chat_agent.py | 1756 | # no relevance extraction: simply return passages | STRING |
| LOW | langroid/parsing/utils.py | 189 | # just add them to the last sentence and break | COMMENT |
| LOW | langroid/parsing/md_parser.py | 314 | # we just add it anyway to avoid creating a tiny final chunk. | COMMENT |
| LOW | langroid/parsing/md_parser.py | 546 | # Pure text, no hierarchy, so just use recursive_chunk | COMMENT |
| LOW | langroid/parsing/urls.py | 156 | # no need to crawl, just return the original list | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/notes/weaviate.md | 28 | WEAVIATE_API_KEY=<your_api_key> | CODE |
| HIGH | docs/notes/tavily_search.md | 22 | TAVILY_API_KEY=<your_api_key> | CODE |
| HIGH | docs/notes/serpapi_search.md | 8 | SERPAPI_API_KEY=<your_api_key> | CODE |
| HIGH | docs/notes/seltz_search.md | 22 | SELTZ_API_KEY=<your_api_key> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/chainlit/dependency_chatbot.py | 232 | DON'T forget to include the package name in your questions. | CODE |
| MEDIUM | examples/docqa/rag-local-simple.py | 44 | # Once this works, then you can try the DocChatAgent | COMMENT |
| MEDIUM | examples/summarize/summ-batch.py | 56 | # Once this works, then you can try the DocChatAgent | COMMENT |
| MEDIUM | examples/summarize/summ.py | 54 | # Once this works, then you can try the DocChatAgent | COMMENT |
| MEDIUM | examples/basic/fn-call-local-numerical.py | 152 | # Once this works, then you can try the rest of the example. | STRING |
| MEDIUM | examples/basic/fn-call-local-simple.py | 105 | # Once this works, then you can try the rest of the example. | COMMENT |
| LOW | examples/kg-chat/dependency_chatbot.py | 255 | DON'T forget to include the package name in your questions. | CODE |
| LOW | langroid/agent/xml_tool_message.py | 476 | Make sure to replace the placeholders with actual values | CODE |
| MEDIUM | langroid/parsing/md_parser.py | 566 | # (you can adjust chunk_size, overlap_tokens, variation_percent) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | langroid/language_models/base.py | 168 | Represents a single tool call in a list of tool calls generated by OpenAI LLM API. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | langroid/parsing/url_loader.py | 847 | # Step 1: Separate URLs into documents and web pages | COMMENT |
| LOW⚡ | langroid/parsing/url_loader.py | 855 | # Step 2: Process web page URLs asynchronously | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | langroid/parsing/md_parser.py | 557 | # Example usage: | COMMENT |
| LOW | langroid/parsing/urls.py | 331 | # Example usage | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | langroid/embedding_models/models.py | 43 | # TODO: Add auth support for Azure OpenAI via AzureADTokenProvider | COMMENT |