diff --git a/.env b/.env index 3386f4b..3fbfb93 100644 --- a/.env +++ b/.env @@ -5,28 +5,24 @@ LANGSMITH_PROJECT="agent_learning" DATABASE_URI=sqlite:///./langgraph.db REDIS_URI=redis://localhost:6379/0 #spark: -# LLM_API_KEY='semi-ai.tech' +LLM_API_KEY='semi-ai.tech' # LLM_BASE_URL="http://192.168.137.96:8000/v1" -# LLM_MODEL = "Qwen/Qwen3.6-35B-A3B-FP8" +LLM_BASE_URL="http://semi-ai.tech:50400/v1" +LLM_MODEL = "Qwen/Qwen3.6-35B-A3B-FP8" # ASR_TTS_BASE_URL = "http://192.168.137.96:8100" # ASR_BASE_URL = "http://192.168.137.96:8901/v1" # TTS_BASE_URL = "http://192.168.137.96:8902" # RAG_BASE_URL = "http://192.168.137.96:8903" - -ASR_BASE_URL = "http://192.168.137.164:8901/v1" -TTS_BASE_URL = "http://192.168.137.164:8902" -RAG_BASE_URL = "http://192.168.137.164:8903" - #6000pro: # LLM_API_KEY='semi-ai.tech' # LLM_BASE_URL="http://semi-ai.tech:40056/v1" # LLM_MODEL = "Intel/Qwen3.6-35B-A3B-int4-mixed-AutoRound" #A100: -LLM_API_KEY = 'sk-kGhWAQTqLk9ECsmIDb758a456bD34e92B9771dF2E36432Fb' -LLM_BASE_URL = "https://app.semi-ai.tech:60004/v1" -LLM_MODEL = "Qwen3.5-122B-A10B" +# LLM_API_KEY = 'sk-kGhWAQTqLk9ECsmIDb758a456bD34e92B9771dF2E36432Fb' +# LLM_BASE_URL = "https://app.semi-ai.tech:60004/v1" +# LLM_MODEL = "Qwen3.5-122B-A10B" # LLM_TIMEOUT = 300 # LLM_REQUESTS_PER_SECOND = 10.0 # LLM_MAX_BUCKET_SIZE = 10 diff --git a/src/agent/__pycache__/__init__.cpython-312.pyc b/src/agent/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..54b9c69 Binary files /dev/null and b/src/agent/__pycache__/__init__.cpython-312.pyc differ diff --git a/src/agent/__pycache__/chatbot_agent.cpython-312.pyc b/src/agent/__pycache__/chatbot_agent.cpython-312.pyc new file mode 100644 index 0000000..17813a5 Binary files /dev/null and b/src/agent/__pycache__/chatbot_agent.cpython-312.pyc differ diff --git a/src/agent/__pycache__/llm.cpython-312.pyc b/src/agent/__pycache__/llm.cpython-312.pyc new file mode 100644 index 0000000..968a909 Binary files /dev/null and b/src/agent/__pycache__/llm.cpython-312.pyc differ diff --git a/src/agent/history/data_base/chat_history.db b/src/agent/history/data_base/chat_history.db index 22db556..8127b2b 100644 Binary files a/src/agent/history/data_base/chat_history.db and b/src/agent/history/data_base/chat_history.db differ diff --git a/src/agent/history/multi_inputs/20260603_121405/ui_messages.json b/src/agent/history/multi_inputs/20260603_121405/ui_messages.json new file mode 100644 index 0000000..808aa20 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_121405/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/history/multi_inputs/20260603_121521/ui_messages.json b/src/agent/history/multi_inputs/20260603_121521/ui_messages.json new file mode 100644 index 0000000..808aa20 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_121521/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/history/multi_inputs/20260603_121652/ui_messages.json b/src/agent/history/multi_inputs/20260603_121652/ui_messages.json new file mode 100644 index 0000000..6441e65 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_121652/ui_messages.json @@ -0,0 +1,39 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + }, + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/history/multi_inputs/20260603_121729/ui_messages.json b/src/agent/history/multi_inputs/20260603_121729/ui_messages.json new file mode 100644 index 0000000..808aa20 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_121729/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/history/multi_inputs/20260603_122026/ui_messages.json b/src/agent/history/multi_inputs/20260603_122026/ui_messages.json new file mode 100644 index 0000000..808aa20 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_122026/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/history/multi_inputs/20260603_122112/ui_messages.json b/src/agent/history/multi_inputs/20260603_122112/ui_messages.json new file mode 100644 index 0000000..808aa20 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_122112/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/history/multi_inputs/20260603_122357/ui_messages.json b/src/agent/history/multi_inputs/20260603_122357/ui_messages.json new file mode 100644 index 0000000..808aa20 --- /dev/null +++ b/src/agent/history/multi_inputs/20260603_122357/ui_messages.json @@ -0,0 +1,22 @@ +{ + "version": 2, + "turns": [ + { + "user": { + "content": [ + { + "type": "text", + "text": "你好" + } + ] + }, + "assistant": { + "text": "抱歉,我遇到了一些问题,请稍后再试。", + "output_type": "text", + "autoplay": false, + "audio_duration_seconds": null, + "audio_relpath": null + } + } + ] +} \ No newline at end of file diff --git a/src/agent/llm.py b/src/agent/llm.py index de0d13a..3554e0e 100644 --- a/src/agent/llm.py +++ b/src/agent/llm.py @@ -219,7 +219,7 @@ class ChatQwen(ChatOpenAI): return new_messages def _text_to_audio(self, text: str) -> bytes: - chunks = split_text(text) + chunks = split_text(text, min_effective_chars=20) if len(chunks) == 1: resp = requests.get(f"{TTS_BASE_URL}/tts", params={"text": chunks[0]}) resp.raise_for_status() @@ -405,7 +405,7 @@ if __name__ == "__main__": import sys # 使用原始字符串避免转义问题 - TEST_IMAGE_PATH = r"C:\Users\86166\Desktop\image_raw\4.jpg" + TEST_IMAGE_PATH = r"C:\Users\86166\Desktop\4.png" if not os.path.exists(TEST_IMAGE_PATH): print(f"❌ 图片不存在: {TEST_IMAGE_PATH}") diff --git a/src/agent/memory/__pycache__/__init__.cpython-312.pyc b/src/agent/memory/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..318af58 Binary files /dev/null and b/src/agent/memory/__pycache__/__init__.cpython-312.pyc differ diff --git a/src/agent/memory/__pycache__/system_prompt.cpython-312.pyc b/src/agent/memory/__pycache__/system_prompt.cpython-312.pyc new file mode 100644 index 0000000..0bfd68a Binary files /dev/null and b/src/agent/memory/__pycache__/system_prompt.cpython-312.pyc differ diff --git a/src/agent/tools/__init__.py b/src/agent/tools/__init__.py index 82ff8de..17d29ff 100644 --- a/src/agent/tools/__init__.py +++ b/src/agent/tools/__init__.py @@ -1,5 +1,5 @@ from .tool import * -from .tool_rag import RAGTool +# from .tool_rag import RAGTool # from .tool_database import * # from utils.database_utils import PostgreSQL_Manager @@ -22,11 +22,11 @@ from .tool_rag import RAGTool # return _all_database_tools _all_tools = [ - Websearchclass(), - DateQueryClass(), + WebSearch(), + DateQuery(), ScreenCapture(), - BrowserControlClass(), - RAGTool(), + BrowserControl(), + # RAGTool(), DirectoryListing(), ] diff --git a/src/agent/tools/__pycache__/__init__.cpython-312.pyc b/src/agent/tools/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..d4f4247 Binary files /dev/null and b/src/agent/tools/__pycache__/__init__.cpython-312.pyc differ diff --git a/src/agent/tools/__pycache__/tool.cpython-312.pyc b/src/agent/tools/__pycache__/tool.cpython-312.pyc new file mode 100644 index 0000000..59fddd5 Binary files /dev/null and b/src/agent/tools/__pycache__/tool.cpython-312.pyc differ diff --git a/src/agent/tools/__pycache__/tool_rag.cpython-312.pyc b/src/agent/tools/__pycache__/tool_rag.cpython-312.pyc new file mode 100644 index 0000000..848cac0 Binary files /dev/null and b/src/agent/tools/__pycache__/tool_rag.cpython-312.pyc differ diff --git a/src/agent/tools/tool.py b/src/agent/tools/tool.py index 2eb4114..920b23e 100644 --- a/src/agent/tools/tool.py +++ b/src/agent/tools/tool.py @@ -17,7 +17,7 @@ from agent.llm import llm from utils.env_utils import BROWSER_MAP -class Websearchclass(BaseTool): +class WebSearch(BaseTool): args_schema : type[BaseModel] = create_model("Input_type", query=(str, Field(description="搜索查询内容"))) name : str = "web_search_class" @@ -40,7 +40,7 @@ class Websearchclass(BaseTool): except Exception as e: return f"执行网络搜索时出错: {str(e)}" -class DateQueryClass(BaseTool): +class DateQuery(BaseTool): # 定义工具的输入参数结构,这里没有输入参数,所以是一个空的模型 args_schema : type[BaseModel] = create_model("NoneInput") @@ -109,7 +109,7 @@ class ScreenCapture(BaseTool): async def _arun(self, focus_query: Optional[str] = None) -> Tuple[str, dict]: return await asyncio.to_thread(self._run, focus_query) -class BrowserControlClass(BaseTool): +class BrowserControl(BaseTool): """统一浏览器控制工具:支持打开/关闭浏览器、刷新/关闭标签页、打开指定 URL""" args_schema: type[BaseModel] = create_model( diff --git a/src/agent/utils/__pycache__/__init__.cpython-312.pyc b/src/agent/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..c72cf9f Binary files /dev/null and b/src/agent/utils/__pycache__/__init__.cpython-312.pyc differ diff --git a/src/agent/utils/__pycache__/agent_utils.cpython-312.pyc b/src/agent/utils/__pycache__/agent_utils.cpython-312.pyc new file mode 100644 index 0000000..4e10deb Binary files /dev/null and b/src/agent/utils/__pycache__/agent_utils.cpython-312.pyc differ diff --git a/src/agent/utils/__pycache__/env_utils.cpython-312.pyc b/src/agent/utils/__pycache__/env_utils.cpython-312.pyc new file mode 100644 index 0000000..7c78584 Binary files /dev/null and b/src/agent/utils/__pycache__/env_utils.cpython-312.pyc differ diff --git a/src/agent/utils/__pycache__/image_utils.cpython-312.pyc b/src/agent/utils/__pycache__/image_utils.cpython-312.pyc new file mode 100644 index 0000000..00adb64 Binary files /dev/null and b/src/agent/utils/__pycache__/image_utils.cpython-312.pyc differ diff --git a/src/web/__pycache__/__init__.cpython-312.pyc b/src/web/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..0065abe Binary files /dev/null and b/src/web/__pycache__/__init__.cpython-312.pyc differ diff --git a/src/web/__pycache__/server.cpython-312.pyc b/src/web/__pycache__/server.cpython-312.pyc new file mode 100644 index 0000000..b0a6dc1 Binary files /dev/null and b/src/web/__pycache__/server.cpython-312.pyc differ diff --git a/src/web/__pycache__/ui_session.cpython-312.pyc b/src/web/__pycache__/ui_session.cpython-312.pyc new file mode 100644 index 0000000..388d1e6 Binary files /dev/null and b/src/web/__pycache__/ui_session.cpython-312.pyc differ