资讯动态

PandasAI 如何用 follow_up 在多轮对话中保持上下文

发布时间:2026/9/13 8:58:11 来源:尧图企业网站定制
PandasAI 如何用 follow_up 在多轮对话中保持上下文【免费下载链接】pandas-aiChat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.项目地址: https://gitcode.com/GitHub_Trending/pa/pandas-ai用pai.chat()问数据时每次调用都是一次性的它不会记得上一次问过什么。如果你想在回答之上继续追问——比如先问“总销售额是多少”再问“那去年呢”——就需要使用 PandasAI 的Agent及其follow_up方法。follow_up与chat的区别在于chat会开启新对话并清空会话记忆而follow_up不清空记忆agent 可以基于之前的问答理解上下文Agent 文档。本文给出从零配置到验证多轮对话上下文生效的完整路径。准备条件按 Installation QuickstartPandasAI 要求 Python3.8 3.11。多轮对话本身还需要一个可用的 LLMv3 中必须全局配置 LLM迁移文档。# 安装主包pip 或 poetry 均可 pip install pandasai # 以 OpenAI 为例安装 LLM 扩展 pip install pandasai-litellm全局配置 LLM下面的 API key 和模型名需要你按自己账号替换文档示例使用的是gpt-4.1-miniimport pandasai as pai from pandasai_litellm.litellm import LiteLLM llm LiteLLM(modelgpt-4.1-mini, api_keyYOUR_OPENAI_API_KEY) pai.config.set({ llm: llm })如果没配 LLM 就调用chat会抛出ValueError提示 API key 未包含 LLM 额度需要配置 OpenAI 或 LiteLLM key。创建 Agent 并用 chat 开启对话pai.chat()面向单会话的探索式分析多轮对话需要实例化Agent。以 Agent 文档 中的示例数据为例import pandas as pd from pandasai import Agent # 示例 DataFrame sales_by_country pd.DataFrame({ country: [United States, United Kingdom, France, Germany, Italy, Spain, Canada, Australia, Japan, China], sales: [5000, 3200, 2900, 4100, 2300, 2100, 2500, 2600, 4500, 7000], deals_opened: [142, 80, 70, 90, 60, 50, 40, 30, 110, 120], deals_closed: [120, 70, 60, 80, 50, 40, 30, 20, 100, 110] }) agent Agent(sales_by_country) agent.chat(Which are the top 5 countries by sales?) # 文档示例输出: China, United States, Japan, Germany, Australia注意chat的语义在 Agent 源码 中chat会先调用start_new_conversation()即清空记忆再处理查询。所以每次调chat都是重新开始一轮对话而follow_up才会接着上一轮说。用 follow_up 保持上下文开始新一轮对话用chat之后所有延续性追问都用follow_up两者都接受query和可选的output_type参数源码# Start a new conversation response agent.chat(What is the total sales?) print(First response:, response) # Continue the conversation without clearing memory follow_up_response agent.follow_up(What about last year?) print(Follow-up response:, follow_up_response)文档对这一行为的说明是follow_up方法与chat工作方式相同但不清空会话记忆agent 因此能理解来自之前消息的上下文。响应对象打印时会自动输出其.value属性见 Chat and Output所以print(response)即可看到回答内容。追问是否真的“记得”上文最直接的核对方式是检查追问回答是否引用了前一轮的对象例如继续按国家、销售额口径回答而不是把“What about last year?”当成一个没有参照的孤立问题来报错或泛泛回答。同时可以用response.last_code_executed查看生成本次回答的执行代码辅助判断追问是否落在正确的字段和口径上。模块级入口pai.follow_up除了在 agent 实例上调follow_upPandasAI 还提供了模块级pai.follow_up(query)入口实现。它与pai.chat(query, *dataframes)配对使用pai.chat会创建并保存一个全局 agentpai.follow_up继续这个 agent 的对话。这里有一个明确的报错场景如果还没有通过pai.chat建立过对话就调用pai.follow_up会抛出ValueError错误信息为No existing conversation. Please use chat() to start a new conversation.。也就是说模块级follow_up的前置条件是先执行过一次pai.chat。控制与重置对话记忆Agent构造时接受memory_size参数默认值为10Agent 源码用于限制带入下一轮提示的历史消息条数Memory 实现。官方文档示例中的写法agent Agent([df1, df2], memory_size10)当需要丢弃历史、从零开始时文档给出的路径是再次调用chat——因为chat自带清空记忆的行为也可以显式调用agent.start_new_conversation()或agent.clear_memory()达到同样效果源码。v2 用户迁移时注意如果你是从 v2 迁移过来follow_up是 v3 新增的 Agent 方法Backwards Compatibility 文档# Start conversation response agent.chat(What is the total revenue?) # Follow up without losing context follow_up agent.follow_up(What about last quarter?)同一文档同时提醒v2 中的clarification_questions()、explain()和rephrase_query()方法在 v3 中已被移除迁移排查文档。遇到AttributeError: Agent object has no attribute clarification_questions这类报错时替代方式就是改用chat开启对话、follow_up延续上下文。小结与边界单会话探索用pai.chat()/df.chat()多轮追问用Agentfollow_up或模块级pai.chatpai.follow_up。chat每次调用都会清空记忆follow_up不清空这是两者唯一的实质区别。模块级pai.follow_up之前必须先有pai.chat否则抛出ValueError: No existing conversation...。memory_size控制带入上下文的历史消息量默认 10。v3 要求全局配置 LLMpai.config.set否则chat/follow_up都会因缺少 LLM 报错。完整的 agent 用法含沙箱执行、向量库训练可继续参考 Agent 文档输出格式细节见 Chat and Output。【免费下载链接】pandas-aiChat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.项目地址: https://gitcode.com/GitHub_Trending/pa/pandas-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价