news 2026/9/13 8:58:07

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PandasAI 如何用 follow_up 在多轮对话中保持上下文

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_upchat的区别在于:chat会开启新对话并清空会话记忆,而follow_up不清空记忆,agent 可以基于之前的问答理解上下文(Agent 文档)。本文给出从零配置到验证多轮对话上下文生效的完整路径。

准备条件

按 Installation & Quickstart,PandasAI 要求 Python3.8+ <=3.11。多轮对话本身还需要一个可用的 LLM,v3 中必须全局配置 LLM(迁移文档)。

# 安装主包(pip 或 poetry 均可) pip install pandasai # 以 OpenAI 为例,安装 LLM 扩展 pip install pandasai-litellm

全局配置 LLM(下面的 API key 和模型名需要你按自己账号替换,文档示例使用的是gpt-4.1-mini):

import pandasai as pai from pandasai_litellm.litellm import LiteLLM llm = LiteLLM(model="gpt-4.1-mini", api_key="YOUR_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_up,PandasAI 还提供了模块级pai.follow_up(query)(入口实现)。它与pai.chat(query, *dataframes)配对使用:pai.chat会创建并保存一个全局 agent,pai.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参数,默认值为10(Agent 源码),用于限制带入下一轮提示的历史消息条数(Memory 实现)。官方文档示例中的写法:

agent = Agent([df1, df2], memory_size=10)

当需要丢弃历史、从零开始时,文档给出的路径是再次调用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();多轮追问用Agent+follow_up(或模块级pai.chat+pai.follow_up)。
  • chat每次调用都会清空记忆;follow_up不清空,这是两者唯一的实质区别。
  • 模块级pai.follow_up之前必须先有pai.chat,否则抛出ValueError: No existing conversation...
  • memory_size控制带入上下文的历史消息量,默认 10。
  • v3 要求全局配置 LLM(pai.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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 8:55:39

Windows上跑通Hive:WSL2+Docker容器化部署实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 8:55:35

STM32硬件SPI读取MAX31865实现PT100高精度温度采集

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 8:53:37

AI论文写作工具评测与效率提升实战指南

1. AI论文写作工具的市场现状与核心需求学术写作领域正在经历一场由AI技术驱动的变革。根据2023年教育技术调查报告显示&#xff0c;超过67%的研究生和45%的教授已经开始尝试使用各类AI辅助写作工具。这种需求激增的背后&#xff0c;反映出现代学术工作者面临的三重挑战&#x…

作者头像 李华
网站建设 2026/9/13 8:48:44

SQL Server 2012企业版部署实战:兼容性、权限与静默预检

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华