auto-coder 0.1.283__tar.gz → 0.1.284__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {auto_coder-0.1.283 → auto_coder-0.1.284}/PKG-INFO +1 -1
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/auto_coder.egg-info/SOURCES.txt +1 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/__init__.py +7 -1
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/lang.py +4 -2
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/long_context_rag.py +25 -47
- auto_coder-0.1.284/src/autocoder/rag/qa_conversation_strategy.py +132 -0
- auto_coder-0.1.284/src/autocoder/version.py +1 -0
- auto_coder-0.1.283/src/autocoder/version.py +0 -1
- {auto_coder-0.1.283 → auto_coder-0.1.284}/LICENSE +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/README.md +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/setup.cfg +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/setup.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_planner.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.283 → auto_coder-0.1.284}/tests/test_symbols_utils.py +0 -0
|
@@ -121,6 +121,7 @@ src/autocoder/rag/document_retriever.py
|
|
|
121
121
|
src/autocoder/rag/lang.py
|
|
122
122
|
src/autocoder/rag/llm_wrapper.py
|
|
123
123
|
src/autocoder/rag/long_context_rag.py
|
|
124
|
+
src/autocoder/rag/qa_conversation_strategy.py
|
|
124
125
|
src/autocoder/rag/rag_config.py
|
|
125
126
|
src/autocoder/rag/rag_entry.py
|
|
126
127
|
src/autocoder/rag/raw_rag.py
|
|
@@ -295,7 +295,13 @@ class AutoCoderArgs(pydantic.BaseModel):
|
|
|
295
295
|
rag_type: Optional[str] = "storage"
|
|
296
296
|
rag_params_max_tokens: Optional[int] = 4096
|
|
297
297
|
rag_doc_filter_relevance: Optional[int] = 5
|
|
298
|
-
rag_context_window_limit: Optional[int] = 120000
|
|
298
|
+
rag_context_window_limit: Optional[int] = 120000
|
|
299
|
+
|
|
300
|
+
# 回答用户问题时,使用哪种对话历史策略
|
|
301
|
+
# single_round: 单轮对话
|
|
302
|
+
# multi_round: 多轮对话
|
|
303
|
+
rag_qa_conversation_strategy: Optional[str] = "multi_round"
|
|
304
|
+
|
|
299
305
|
verify_file_relevance_score: int = 6
|
|
300
306
|
enable_rag_search: Optional[Union[bool, str]] = False
|
|
301
307
|
enable_rag_context: Optional[Union[bool, str]] = False
|
|
@@ -13,7 +13,8 @@ MESSAGES = {
|
|
|
13
13
|
"doc_filter_start": "Document filtering start, total {{total}} documents",
|
|
14
14
|
"doc_filter_progress": "Document filtering progress: {{progress_percent}}% processed {{relevant_count}}/{{total}} documents",
|
|
15
15
|
"doc_filter_error": "Document filtering error: {{error}}",
|
|
16
|
-
"doc_filter_complete": "Document filtering complete, cost {{total_time}} seconds, found {{relevant_count}} relevant documents"
|
|
16
|
+
"doc_filter_complete": "Document filtering complete, cost {{total_time}} seconds, found {{relevant_count}} relevant documents",
|
|
17
|
+
"context_docs_names": "The following are the documents related to the user's question: {{context_docs_names}}",
|
|
17
18
|
},
|
|
18
19
|
"zh": {
|
|
19
20
|
"rag_error_title": "RAG 错误",
|
|
@@ -26,7 +27,8 @@ MESSAGES = {
|
|
|
26
27
|
"doc_filter_start": "开始过滤文档,共 {{total}} 个文档",
|
|
27
28
|
"doc_filter_progress": "文档过滤进度:{{progress_percent}}%,处理了 {{relevant_count}}/{{total}} 个文档",
|
|
28
29
|
"doc_filter_error": "文档过滤错误:{{error}}",
|
|
29
|
-
"doc_filter_complete": "文档过滤完成,耗时 {{total_time}} 秒,找到 {{relevant_count}} 个相关文档"
|
|
30
|
+
"doc_filter_complete": "文档过滤完成,耗时 {{total_time}} 秒,找到 {{relevant_count}} 个相关文档",
|
|
31
|
+
"context_docs_names": "以下是和用户问题相关的文档:{{context_docs_names}}",
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
|
|
@@ -37,6 +37,7 @@ from autocoder.rag.relevant_utils import DocFilterResult
|
|
|
37
37
|
from pydantic import BaseModel
|
|
38
38
|
from byzerllm.utils.types import SingleOutputMeta
|
|
39
39
|
from autocoder.rag.lang import get_message_with_format_and_newline
|
|
40
|
+
from autocoder.rag.qa_conversation_strategy import get_qa_strategy
|
|
40
41
|
|
|
41
42
|
try:
|
|
42
43
|
from autocoder_pro.rag.llm_compute import LLMComputeEngine
|
|
@@ -173,10 +174,11 @@ class LongContextRAG:
|
|
|
173
174
|
|
|
174
175
|
self.token_limit = self.args.rag_context_window_limit or 120000
|
|
175
176
|
retriever_class = self._get_document_retriever_class()
|
|
176
|
-
|
|
177
|
+
|
|
177
178
|
if self.args.enable_hybrid_index and not self.on_ray:
|
|
178
179
|
if self.emb_llm is None:
|
|
179
|
-
raise ValueError(
|
|
180
|
+
raise ValueError(
|
|
181
|
+
"emb_llm is required for local byzer storage cache")
|
|
180
182
|
|
|
181
183
|
self.document_retriever = retriever_class(
|
|
182
184
|
self.path,
|
|
@@ -255,36 +257,7 @@ class LongContextRAG:
|
|
|
255
257
|
请根据提供的文档内容、用户对话历史以及最后一个问题,提取并总结文档中与问题相关的重要信息。
|
|
256
258
|
如果文档中没有相关信息,请回复"该文档中没有与问题相关的信息"。
|
|
257
259
|
提取的信息尽量保持和原文中的一样,并且只输出这些信息。
|
|
258
|
-
"""
|
|
259
|
-
|
|
260
|
-
@byzerllm.prompt()
|
|
261
|
-
def _answer_question(
|
|
262
|
-
self, query: str, relevant_docs: List[str]
|
|
263
|
-
) -> Generator[str, None, None]:
|
|
264
|
-
"""
|
|
265
|
-
文档:
|
|
266
|
-
<documents>
|
|
267
|
-
{% for doc in relevant_docs %}
|
|
268
|
-
{{ doc }}
|
|
269
|
-
{% endfor %}
|
|
270
|
-
</documents>
|
|
271
|
-
|
|
272
|
-
使用以上文档来回答用户的问题。回答要求:
|
|
273
|
-
|
|
274
|
-
1. 严格基于文档内容回答
|
|
275
|
-
- 如果文档提供的信息无法回答问题,请明确回复:"抱歉,文档中没有足够的信息来回答这个问题。"
|
|
276
|
-
- 不要添加、推测或扩展文档未提及的信息
|
|
277
|
-
|
|
278
|
-
2. 格式如  的 Markdown 图片处理
|
|
279
|
-
- 根据Markdown 图片前后文本内容推测改图片与问题的相关性,有相关性则在回答中输出该Markdown图片路径
|
|
280
|
-
- 根据相关图片在文档中的位置,自然融入答复内容,保持上下文连贯
|
|
281
|
-
- 完整保留原始图片路径,不省略任何部分
|
|
282
|
-
|
|
283
|
-
3. 回答格式要求
|
|
284
|
-
- 使用markdown格式提升可读性
|
|
285
|
-
|
|
286
|
-
问题:{{ query }}
|
|
287
|
-
"""
|
|
260
|
+
"""
|
|
288
261
|
|
|
289
262
|
def _get_document_retriever_class(self):
|
|
290
263
|
"""Get the document retriever class based on configuration."""
|
|
@@ -627,13 +600,22 @@ class LongContextRAG:
|
|
|
627
600
|
|
|
628
601
|
if not relevant_docs:
|
|
629
602
|
yield ("没有找到可以回答你问题的相关文档", SingleOutputMeta(input_tokens_count=rag_stat.recall_stat.total_input_tokens + rag_stat.chunk_stat.total_input_tokens,
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
603
|
+
generated_tokens_count=rag_stat.recall_stat.total_generated_tokens +
|
|
604
|
+
rag_stat.chunk_stat.total_generated_tokens,
|
|
605
|
+
))
|
|
633
606
|
return
|
|
634
607
|
|
|
635
608
|
context = [doc.source_code.module_name for doc in relevant_docs]
|
|
636
609
|
|
|
610
|
+
yield ("", SingleOutputMeta(input_tokens_count=rag_stat.recall_stat.total_input_tokens + rag_stat.chunk_stat.total_input_tokens,
|
|
611
|
+
generated_tokens_count=rag_stat.recall_stat.total_generated_tokens +
|
|
612
|
+
rag_stat.chunk_stat.total_generated_tokens,
|
|
613
|
+
reasoning_content=get_message_with_format_and_newline(
|
|
614
|
+
"context_docs_names",
|
|
615
|
+
context_docs_names=",".join(
|
|
616
|
+
context))
|
|
617
|
+
))
|
|
618
|
+
|
|
637
619
|
# 将 FilterDoc 转化为 SourceCode 方便后续的逻辑继续做处理
|
|
638
620
|
relevant_docs = [doc.source_code for doc in relevant_docs]
|
|
639
621
|
|
|
@@ -792,7 +774,7 @@ class LongContextRAG:
|
|
|
792
774
|
tokens=request_tokens
|
|
793
775
|
)
|
|
794
776
|
))
|
|
795
|
-
|
|
777
|
+
|
|
796
778
|
yield ("", SingleOutputMeta(input_tokens_count=rag_stat.recall_stat.total_input_tokens + rag_stat.chunk_stat.total_input_tokens,
|
|
797
779
|
generated_tokens_count=rag_stat.recall_stat.total_generated_tokens +
|
|
798
780
|
rag_stat.chunk_stat.total_generated_tokens,
|
|
@@ -834,16 +816,12 @@ class LongContextRAG:
|
|
|
834
816
|
|
|
835
817
|
self._print_rag_stats(rag_stat)
|
|
836
818
|
else:
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
doc.source_code for doc in relevant_docs],
|
|
844
|
-
),
|
|
845
|
-
}
|
|
846
|
-
]
|
|
819
|
+
|
|
820
|
+
qa_strategy = get_qa_strategy(self.args.rag_qa_conversation_strategy)
|
|
821
|
+
new_conversations = qa_strategy.create_conversation(
|
|
822
|
+
documents=[doc.source_code for doc in relevant_docs],
|
|
823
|
+
conversations=conversations
|
|
824
|
+
)
|
|
847
825
|
|
|
848
826
|
chunks = target_llm.stream_chat_oai(
|
|
849
827
|
conversations=new_conversations,
|
|
@@ -864,7 +842,7 @@ class LongContextRAG:
|
|
|
864
842
|
chunk[1].generated_tokens_count = rag_stat.recall_stat.total_generated_tokens + \
|
|
865
843
|
rag_stat.chunk_stat.total_generated_tokens + \
|
|
866
844
|
rag_stat.answer_stat.total_generated_tokens
|
|
867
|
-
|
|
845
|
+
|
|
868
846
|
yield chunk
|
|
869
847
|
|
|
870
848
|
self._print_rag_stats(rag_stat)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import List, Dict, Any,Generator
|
|
3
|
+
import byzerllm
|
|
4
|
+
|
|
5
|
+
class QAConversationStrategy(ABC):
|
|
6
|
+
"""
|
|
7
|
+
Abstract base class for conversation strategies.
|
|
8
|
+
Different strategies organize documents and conversations differently.
|
|
9
|
+
"""
|
|
10
|
+
@abstractmethod
|
|
11
|
+
def create_conversation(self, documents: List[Any], conversations: List[Dict[str,str]]) -> List[Dict]:
|
|
12
|
+
"""
|
|
13
|
+
Create a conversation structure based on documents and history
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
documents: List of retrieved documents
|
|
17
|
+
conversations: conversation turns
|
|
18
|
+
|
|
19
|
+
Returns:
|
|
20
|
+
List of message dictionaries representing the conversation to send to the model
|
|
21
|
+
"""
|
|
22
|
+
pass
|
|
23
|
+
|
|
24
|
+
class MultiRoundStrategy(QAConversationStrategy):
|
|
25
|
+
"""
|
|
26
|
+
Multi-round strategy: First let the model read documents, then do Q&A.
|
|
27
|
+
Creates multiple conversation turns.
|
|
28
|
+
"""
|
|
29
|
+
def create_conversation(self, documents: List[Any], conversations: List[Dict[str,str]]) -> List[Dict]:
|
|
30
|
+
messages = []
|
|
31
|
+
messages.extend([
|
|
32
|
+
{"role": "user", "content": self._read_docs_prompt.prompt(documents)},
|
|
33
|
+
{"role": "assistant", "content": "好的"}
|
|
34
|
+
])
|
|
35
|
+
messages.extend(conversations)
|
|
36
|
+
return messages
|
|
37
|
+
|
|
38
|
+
@byzerllm.prompt()
|
|
39
|
+
def _read_docs_prompt(
|
|
40
|
+
self, relevant_docs: List[str]
|
|
41
|
+
) -> Generator[str, None, None]:
|
|
42
|
+
"""
|
|
43
|
+
请阅读以下:
|
|
44
|
+
<documents>
|
|
45
|
+
{% for doc in relevant_docs %}
|
|
46
|
+
{{ doc }}
|
|
47
|
+
{% endfor %}
|
|
48
|
+
</documents>
|
|
49
|
+
|
|
50
|
+
阅读完成后,使用以上文档来回答用户的问题。回答要求:
|
|
51
|
+
|
|
52
|
+
1. 严格基于文档内容回答
|
|
53
|
+
- 如果文档提供的信息无法回答问题,请明确回复:"抱歉,文档中没有足够的信息来回答这个问题。"
|
|
54
|
+
- 不要添加、推测或扩展文档未提及的信息
|
|
55
|
+
|
|
56
|
+
2. 格式如  的 Markdown 图片处理
|
|
57
|
+
- 根据Markdown 图片前后文本内容推测改图片与问题的相关性,有相关性则在回答中输出该Markdown图片路径
|
|
58
|
+
- 根据相关图片在文档中的位置,自然融入答复内容,保持上下文连贯
|
|
59
|
+
- 完整保留原始图片路径,不省略任何部分
|
|
60
|
+
|
|
61
|
+
3. 回答格式要求
|
|
62
|
+
- 使用markdown格式提升可读性
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
class SingleRoundStrategy(QAConversationStrategy):
|
|
66
|
+
"""
|
|
67
|
+
Single-round strategy: Put documents and conversation history in a single round.
|
|
68
|
+
"""
|
|
69
|
+
def create_conversation(self, documents: List[Any], conversations: List[Dict[str,str]]) -> List[Dict]:
|
|
70
|
+
messages = []
|
|
71
|
+
messages.extend([
|
|
72
|
+
{"role": "user", "content": self._single_round_answer_question.prompt(documents, conversations)}
|
|
73
|
+
])
|
|
74
|
+
return messages
|
|
75
|
+
|
|
76
|
+
@byzerllm.prompt()
|
|
77
|
+
def _single_round_answer_question(
|
|
78
|
+
self, relevant_docs: List[str], conversations: List[Dict[str, str]]
|
|
79
|
+
) -> Generator[str, None, None]:
|
|
80
|
+
"""
|
|
81
|
+
文档:
|
|
82
|
+
<documents>
|
|
83
|
+
{% for doc in relevant_docs %}
|
|
84
|
+
{{ doc }}
|
|
85
|
+
{% endfor %}
|
|
86
|
+
</documents>
|
|
87
|
+
|
|
88
|
+
用户历史对话:
|
|
89
|
+
<conversations>
|
|
90
|
+
{% for msg in conversations %}
|
|
91
|
+
<{{ msg.role }}>: {{ msg.content }}
|
|
92
|
+
{% endfor %}
|
|
93
|
+
</conversations>
|
|
94
|
+
|
|
95
|
+
使用以上文档来回答用户最后的问题。回答要求:
|
|
96
|
+
|
|
97
|
+
1. 严格基于文档内容回答
|
|
98
|
+
- 如果文档提供的信息无法回答问题,请明确回复:"抱歉,文档中没有足够的信息来回答这个问题。"
|
|
99
|
+
- 不要添加、推测或扩展文档未提及的信息
|
|
100
|
+
|
|
101
|
+
2. 格式如  的 Markdown 图片处理
|
|
102
|
+
- 根据Markdown 图片前后文本内容推测改图片与问题的相关性,有相关性则在回答中输出该Markdown图片路径
|
|
103
|
+
- 根据相关图片在文档中的位置,自然融入答复内容,保持上下文连贯
|
|
104
|
+
- 完整保留原始图片路径,不省略任何部分
|
|
105
|
+
|
|
106
|
+
3. 回答格式要求
|
|
107
|
+
- 使用markdown格式提升可读性
|
|
108
|
+
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
def get_qa_strategy(strategy_name: str) -> QAConversationStrategy:
|
|
112
|
+
"""
|
|
113
|
+
Factory method to get the appropriate conversation strategy
|
|
114
|
+
|
|
115
|
+
Args:
|
|
116
|
+
strategy_name: Name of the strategy to use
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
An instance of the requested strategy
|
|
120
|
+
|
|
121
|
+
Raises:
|
|
122
|
+
ValueError: If the requested strategy doesn't exist
|
|
123
|
+
"""
|
|
124
|
+
strategies = {
|
|
125
|
+
"multi_round": MultiRoundStrategy,
|
|
126
|
+
"single_round": SingleRoundStrategy,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if strategy_name not in strategies:
|
|
130
|
+
raise ValueError(f"Unknown strategy: {strategy_name}. Available strategies: {list(strategies.keys())}")
|
|
131
|
+
|
|
132
|
+
return strategies[strategy_name]()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.284"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.283"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_editblock.py
RENAMED
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_strict_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_strict_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/rag/cache/local_byzer_storage_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py
RENAMED
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.283 → auto_coder-0.1.284}/src/autocoder/utils/chat_auto_coder_utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|