auto-coder 0.1.282__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.
Files changed (188) hide show
  1. {auto_coder-0.1.282 → auto_coder-0.1.284}/PKG-INFO +1 -1
  2. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/auto_coder.egg-info/SOURCES.txt +1 -0
  4. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/__init__.py +7 -1
  5. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/lang.py +4 -2
  6. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/long_context_rag.py +27 -45
  7. auto_coder-0.1.284/src/autocoder/rag/qa_conversation_strategy.py +132 -0
  8. auto_coder-0.1.284/src/autocoder/version.py +1 -0
  9. auto_coder-0.1.282/src/autocoder/version.py +0 -1
  10. {auto_coder-0.1.282 → auto_coder-0.1.284}/LICENSE +0 -0
  11. {auto_coder-0.1.282 → auto_coder-0.1.284}/README.md +0 -0
  12. {auto_coder-0.1.282 → auto_coder-0.1.284}/setup.cfg +0 -0
  13. {auto_coder-0.1.282 → auto_coder-0.1.284}/setup.py +0 -0
  14. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  15. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/auto_coder.egg-info/entry_points.txt +0 -0
  16. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/auto_coder.egg-info/requires.txt +0 -0
  17. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/auto_coder.egg-info/top_level.txt +0 -0
  18. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/__init__.py +0 -0
  19. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/__init__.py +0 -0
  20. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  21. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/auto_filegroup.py +0 -0
  22. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/auto_guess_query.py +0 -0
  23. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  24. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/auto_review_commit.py +0 -0
  25. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/auto_tool.py +0 -0
  26. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/coder.py +0 -0
  27. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/designer.py +0 -0
  28. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/planner.py +0 -0
  29. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/agent/project_reader.py +0 -0
  30. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/auto_coder.py +0 -0
  31. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/auto_coder_rag.py +0 -0
  32. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
  33. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/auto_coder_rag_mcp.py +0 -0
  34. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/auto_coder_runner.py +0 -0
  35. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/auto_coder_server.py +0 -0
  36. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/benchmark.py +0 -0
  37. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/chat/__init__.py +0 -0
  38. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/chat_auto_coder.py +0 -0
  39. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/chat_auto_coder_lang.py +0 -0
  40. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/command_args.py +0 -0
  41. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/commands/__init__.py +0 -0
  42. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/commands/auto_command.py +0 -0
  43. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/commands/tools.py +0 -0
  44. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/JupyterClient.py +0 -0
  45. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/ShellClient.py +0 -0
  46. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/anything2images.py +0 -0
  47. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/anything2img.py +0 -0
  48. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/audio.py +0 -0
  49. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/auto_coder_lang.py +0 -0
  50. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/auto_configure.py +0 -0
  51. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/buildin_tokenizer.py +0 -0
  52. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/chunk_validation.py +0 -0
  53. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/cleaner.py +0 -0
  54. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_execute.py +0 -0
  55. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate.py +0 -0
  56. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  57. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  58. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  59. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge.py +0 -0
  60. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  61. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  62. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  63. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/code_modification_ranker.py +0 -0
  64. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/command_completer.py +0 -0
  65. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/command_generator.py +0 -0
  66. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/command_templates.py +0 -0
  67. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/conf_import_export.py +0 -0
  68. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/conf_validator.py +0 -0
  69. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/const.py +0 -0
  70. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/context_pruner.py +0 -0
  71. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/conversation_pruner.py +0 -0
  72. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/files.py +0 -0
  73. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/git_utils.py +0 -0
  74. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/global_cancel.py +0 -0
  75. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/image_to_page.py +0 -0
  76. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/index_import_export.py +0 -0
  77. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/interpreter.py +0 -0
  78. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/llm_rerank.py +0 -0
  79. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/mcp_hub.py +0 -0
  80. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/mcp_server.py +0 -0
  81. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  82. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  83. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/mcp_tools.py +0 -0
  84. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/memory_manager.py +0 -0
  85. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/model_speed_test.py +0 -0
  86. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/printer.py +0 -0
  87. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/recall_validation.py +0 -0
  88. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/result_manager.py +0 -0
  89. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/screenshots.py +0 -0
  90. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/search.py +0 -0
  91. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/search_replace.py +0 -0
  92. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/shells.py +0 -0
  93. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/stats_panel.py +0 -0
  94. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/sys_prompt.py +0 -0
  95. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/text.py +0 -0
  96. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/types.py +0 -0
  97. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  98. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/data/byzerllm.md +0 -0
  99. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/data/tokenizer.json +0 -0
  100. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/db/__init__.py +0 -0
  101. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/db/store.py +0 -0
  102. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/__init__.py +0 -0
  103. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/__init__.py +0 -0
  104. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/action.py +0 -0
  105. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/copilot.py +0 -0
  106. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  107. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  108. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
  109. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/__init__.py +0 -0
  110. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/entry.py +0 -0
  111. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/filter/__init__.py +0 -0
  112. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/filter/normal_filter.py +0 -0
  113. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/filter/quick_filter.py +0 -0
  114. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/for_command.py +0 -0
  115. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/index.py +0 -0
  116. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/symbols_utils.py +0 -0
  117. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/index/types.py +0 -0
  118. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/lang.py +0 -0
  119. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/models.py +0 -0
  120. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/privacy/__init__.py +0 -0
  121. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/privacy/model_filter.py +0 -0
  122. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/pyproject/__init__.py +0 -0
  123. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/__init__.py +0 -0
  124. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/api_server.py +0 -0
  125. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/cache/__init__.py +0 -0
  126. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/cache/base_cache.py +0 -0
  127. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  128. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  129. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  130. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/cache/simple_cache.py +0 -0
  131. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/doc_filter.py +0 -0
  132. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/document_retriever.py +0 -0
  133. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/llm_wrapper.py +0 -0
  134. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/loaders/__init__.py +0 -0
  135. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  136. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  137. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  138. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  139. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/rag_config.py +0 -0
  140. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/rag_entry.py +0 -0
  141. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/raw_rag.py +0 -0
  142. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/relevant_utils.py +0 -0
  143. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/simple_directory_reader.py +0 -0
  144. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/simple_rag.py +0 -0
  145. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/stream_event/__init__.py +0 -0
  146. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  147. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/stream_event/types.py +0 -0
  148. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/token_checker.py +0 -0
  149. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/token_counter.py +0 -0
  150. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/token_limiter.py +0 -0
  151. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/token_limiter_utils.py +0 -0
  152. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/types.py +0 -0
  153. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/utils.py +0 -0
  154. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/rag/variable_holder.py +0 -0
  155. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/regexproject/__init__.py +0 -0
  156. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/suffixproject/__init__.py +0 -0
  157. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/tsproject/__init__.py +0 -0
  158. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/__init__.py +0 -0
  159. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/_markitdown.py +0 -0
  160. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  161. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  162. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/auto_project_type.py +0 -0
  163. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  164. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/conversation_store.py +0 -0
  165. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  166. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/llms.py +0 -0
  167. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/log_capture.py +0 -0
  168. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/model_provider_selector.py +0 -0
  169. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/multi_turn.py +0 -0
  170. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/operate_config_api.py +0 -0
  171. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/print_table.py +0 -0
  172. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/project_structure.py +0 -0
  173. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/queue_communicate.py +0 -0
  174. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/request_event_queue.py +0 -0
  175. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/request_queue.py +0 -0
  176. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/rest.py +0 -0
  177. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/stream_thinking.py +0 -0
  178. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/tests.py +0 -0
  179. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/thread_utils.py +0 -0
  180. {auto_coder-0.1.282 → auto_coder-0.1.284}/src/autocoder/utils/types.py +0 -0
  181. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_action_regex_project.py +0 -0
  182. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_chat_auto_coder.py +0 -0
  183. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_code_auto_merge_editblock.py +0 -0
  184. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_command_completer.py +0 -0
  185. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_planner.py +0 -0
  186. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_privacy.py +0 -0
  187. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_queue_communicate.py +0 -0
  188. {auto_coder-0.1.282 → auto_coder-0.1.284}/tests/test_symbols_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.282
3
+ Version: 0.1.284
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.282
3
+ Version: 0.1.284
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -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("emb_llm is required for local byzer storage cache")
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. 格式如 ![image](./path.png) 的 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."""
@@ -626,10 +599,23 @@ class LongContextRAG:
626
599
  return [json.dumps(final_docs, ensure_ascii=False)], []
627
600
 
628
601
  if not relevant_docs:
629
- return ["没有找到相关的文档来回答这个问题。"], []
602
+ yield ("没有找到可以回答你问题的相关文档", SingleOutputMeta(input_tokens_count=rag_stat.recall_stat.total_input_tokens + rag_stat.chunk_stat.total_input_tokens,
603
+ generated_tokens_count=rag_stat.recall_stat.total_generated_tokens +
604
+ rag_stat.chunk_stat.total_generated_tokens,
605
+ ))
606
+ return
630
607
 
631
608
  context = [doc.source_code.module_name for doc in relevant_docs]
632
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
+
633
619
  # 将 FilterDoc 转化为 SourceCode 方便后续的逻辑继续做处理
634
620
  relevant_docs = [doc.source_code for doc in relevant_docs]
635
621
 
@@ -788,7 +774,7 @@ class LongContextRAG:
788
774
  tokens=request_tokens
789
775
  )
790
776
  ))
791
-
777
+
792
778
  yield ("", SingleOutputMeta(input_tokens_count=rag_stat.recall_stat.total_input_tokens + rag_stat.chunk_stat.total_input_tokens,
793
779
  generated_tokens_count=rag_stat.recall_stat.total_generated_tokens +
794
780
  rag_stat.chunk_stat.total_generated_tokens,
@@ -830,16 +816,12 @@ class LongContextRAG:
830
816
 
831
817
  self._print_rag_stats(rag_stat)
832
818
  else:
833
- new_conversations = conversations[:-1] + [
834
- {
835
- "role": "user",
836
- "content": self._answer_question.prompt(
837
- query=query,
838
- relevant_docs=[
839
- doc.source_code for doc in relevant_docs],
840
- ),
841
- }
842
- ]
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
+ )
843
825
 
844
826
  chunks = target_llm.stream_chat_oai(
845
827
  conversations=new_conversations,
@@ -860,7 +842,7 @@ class LongContextRAG:
860
842
  chunk[1].generated_tokens_count = rag_stat.recall_stat.total_generated_tokens + \
861
843
  rag_stat.chunk_stat.total_generated_tokens + \
862
844
  rag_stat.answer_stat.total_generated_tokens
863
-
845
+
864
846
  yield chunk
865
847
 
866
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. 格式如 ![image](./path.png) 的 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. 格式如 ![image](./path.png) 的 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.282"
File without changes
File without changes
File without changes
File without changes