Я хотел бы, чтобы полученный DataFrame был доступен как локальная переменная в моем основном сценарий. Вот мой код:
Код: Выделить всё
import pandas as pd
from langchain.agents import AgentExecutor, create_react_agent, Tool
from langchain.tools import tool
from langchain_community.tools import ShellTool
from langchain_openai import ChatOpenAI
from langchain_experimental.utilities import PythonREPL
from langchain import hub
@tool
def load_excel_response(filepath: str):
"""Load an Excel file and return a transformed DataFrame."""
df = pd.read_excel(filepath, skiprows=2, names=['responses']).reset_index(drop=True)
df = df.select_dtypes(include=['object'])
return df # df.to_json()
llm = ChatOpenAI(model='gpt-4o-mini')
python_repl = PythonREPL()
shell_tool = ShellTool()
repl_tool = Tool(
name="python_repl",
description="Run Python commands in a REPL environment.",
func=python_repl.run,
)
tools_list = [load_excel_response, repl_tool, shell_tool]
prompt = hub.pull("hwchase17/react")
shell_agent = create_react_agent(llm=llm, tools=tools_list, prompt=prompt)
agent_executor = AgentExecutor(agent=shell_agent, tools=tools_list, verbose=True)
path = 'excel_file.xlsx'
user_prompt = f"Load the Excel file located at {path} and assign the result to a variable named df."
response = agent_executor.invoke({"input": user_prompt})
print("Agent response:", response)
- Агент загружает файл Excel (подтверждается результатом verbose=True)< /li>
Окончательный ответ от Agent_executor.invoke() — это словарь, суммирующий шаги агента и последнее сообщение, а не фактические данные DataFrame. - Я хочу вернуть df после агента выполнение.
- Создание глобального df code> и передайте исполнителю агента df в глобальный
- return to_json формат в load_excel_response.
Вопрос:
Как я могу получить DataFrame как локальную переменную в моем основном скрипте Python после агент заканчивает? Мне нужны необработанные данные, а не просто текстовое резюме. Каков правильный подход к LangChain, чтобы я мог иметь в своем скрипте полностью сформированный DataFrame (или, по крайней мере, что-то, что я могу преобразовать в него)?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -execution
Мобильная версия