{"repo": "0910tom/wangzhan", "files": {"utils.py": {"68f272b75e10fa3261321dd6001f45d77c86dbab": {"t": 1785745987.273203, "n": 1729, "h": "5f7314ea131d8de5", "c": "\"\"\"\nutils - 数据分析智能体使用的工具函数\n\nAuthor: 骆昊\nVersion: 0.1\nDate: 2025/6/25\n\"\"\"\nimport json\nfrom turtle import st\n\nfrom dotenv import load_dotenv\nfrom langchain_openai import ChatOpenAI\nfrom langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent\n\nPROMPT_TEMPLATE = \"\"\"你是一位数据分析助手,你的回应内容取决于用户的请求内容,请按照下面的步骤处理用户请求:\n1. 思考阶段 (Thought) :先分析用户请求类型(文字回答/表格/图表),并验证数据类型是否匹配。\n2. 行动阶段 (Action) :根据分析结果选择以下严格对应的格式。\n - 纯文字回答:\n {\"answer\": \"不超过50个字符的明确答案\"}\n\n - 表格数据:\n {\"table\":{\"columns\":[\"列名1\", \"列名2\", ...], \"data\":[[\"第一行值1\", \"值2\", ...], [\"第二行值1\", \"值2\", ...]]}}\n\n - 柱状图\n {\"bar\":{\"columns\": [\"A\", \"B\", \"C\", ...], \"data\":[35, 42, 29, ...]}}\n\n - 折线图\n {\"line\":{\"columns\": [\"A\", \"B\", \"C\", ...], \"data\": [35, 42, 29, ...]}}\n \n3. 格式校验要求\n - 字符串值必须使用英文双引号\n - 数值类型不得添加引号\n - 确保数组闭合无遗漏\n 错误案例:{'columns':['Product', 'Sales'], data:[[A001, 200]]}\n 正确案例:{\"columns\":[\"product\", \"sales\"], \"data\":[[\"A001\", 200]]}\n\n注意:响应数据的\"output\"中不要有换行符、制表符以及其他格式符号。\n\n当前用户请求如下:\\n\"\"\"\n\n\n# 从 secrets 获取 API 密钥\n#api_key = st.secrets['API_KEY']\n\n\n\n\n\n\ndef dataframe_agent(df, query):\n\n load_dotenv()\n model = ChatOpenAI(\n base_url='https://api.deepseek.com',\n model=\"deepseek-chat\",\n temperature=0,\n max_tokens=8192\n )\n agent = create_pandas_dataframe_agent(\n llm=model,\n df=df,\n agent_executor_kwargs={\"handle_parsing_errors\": True},\n max_iterations=32,\n allow_dangerous_code=True,\n verbose=True\n )\n\n prompt = PROMPT_TEMPLATE + query\n\n try:\n response = agent.invoke({\"input\": prompt})\n return json.loads(response[\"output\"])\n except Exception as err:\n print(err)\n return {\"answer\": \"暂时无法提供分析结果,请稍后重试!\"}\n"}, "c70e2b53624a7be42ed46cbd3698e5e7b13ac696": {"t": 1785758543.7878408, "n": 1729, "h": "5f7314ea131d8de5", "c": "\"\"\"\nutils - 数据分析智能体使用的工具函数\n\nAuthor: 骆昊\nVersion: 0.1\nDate: 2025/6/25\n\"\"\"\nimport json\nfrom turtle import st\n\nfrom dotenv import load_dotenv\nfrom langchain_openai import ChatOpenAI\nfrom langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent\n\nPROMPT_TEMPLATE = \"\"\"你是一位数据分析助手,你的回应内容取决于用户的请求内容,请按照下面的步骤处理用户请求:\n1. 思考阶段 (Thought) :先分析用户请求类型(文字回答/表格/图表),并验证数据类型是否匹配。\n2. 行动阶段 (Action) :根据分析结果选择以下严格对应的格式。\n - 纯文字回答:\n {\"answer\": \"不超过50个字符的明确答案\"}\n\n - 表格数据:\n {\"table\":{\"columns\":[\"列名1\", \"列名2\", ...], \"data\":[[\"第一行值1\", \"值2\", ...], [\"第二行值1\", \"值2\", ...]]}}\n\n - 柱状图\n {\"bar\":{\"columns\": [\"A\", \"B\", \"C\", ...], \"data\":[35, 42, 29, ...]}}\n\n - 折线图\n {\"line\":{\"columns\": [\"A\", \"B\", \"C\", ...], \"data\": [35, 42, 29, ...]}}\n \n3. 格式校验要求\n - 字符串值必须使用英文双引号\n - 数值类型不得添加引号\n - 确保数组闭合无遗漏\n 错误案例:{'columns':['Product', 'Sales'], data:[[A001, 200]]}\n 正确案例:{\"columns\":[\"product\", \"sales\"], \"data\":[[\"A001\", 200]]}\n\n注意:响应数据的\"output\"中不要有换行符、制表符以及其他格式符号。\n\n当前用户请求如下:\\n\"\"\"\n\n\n# 从 secrets 获取 API 密钥\n#api_key = st.secrets['API_KEY']\n\n\n\n\n\n\ndef dataframe_agent(df, query):\n\n load_dotenv()\n model = ChatOpenAI(\n base_url='https://api.deepseek.com',\n model=\"deepseek-chat\",\n temperature=0,\n max_tokens=8192\n )\n agent = create_pandas_dataframe_agent(\n llm=model,\n df=df,\n agent_executor_kwargs={\"handle_parsing_errors\": True},\n max_iterations=32,\n allow_dangerous_code=True,\n verbose=True\n )\n\n prompt = PROMPT_TEMPLATE + query\n\n try:\n response = agent.invoke({\"input\": prompt})\n return json.loads(response[\"output\"])\n except Exception as err:\n print(err)\n return {\"answer\": \"暂时无法提供分析结果,请稍后重试!\"}\n"}}}}