Estou testando com uma base própria de uma eleição, quando faço a pergunta a resposta vem correta no "tool_output" porem a "response" vem sempre errada, algumas vezes diz até que não encontrou os dados.
system = f"""Você tem acesso a um dataframe pandas `df`. \
Aqui está a saida de `df.head().to_markdown()`:
{df.head().to_markdown()}
Dada uma pergunta do usuário, escreva o código Python para respondê-la. \
Não presuma que você tem acesso a nenhuma biblioteca além das bibliotecas Python integradas e pandas. \
Responda em português à pergunta quando tiver infomações suficientes para respondê-la."""
prompt = ChatPromptTemplate.from_messages([("system", system),
("human", "{question}"),
MessagesPlaceholder("chat_history", optional=True)])
def get_chat_history(x: dict) -> list:
"""Analise a saída da cadeia até este ponto em uma lista de mensagens do histórico de bate-papo
para inserir no prompt"""
ai_msg = x["ai_msg"]
tool_call_id = x ["ai_msg"].additional_kwargs["tool_calls"][0]["id"]
print(f"Tool call ID: {tool_call_id}")
tool_msg = ToolMessage(content=str(x["tool_output"]), tool_call_id=tool_call_id )
return [ai_msg, tool_msg]
cadeia = (
RunnablePassthrough.assign(ai_msg=prompt | llm_com_ferramenta)
.assign(tool_output=itemgetter("ai_msg") | parser | ferramenta_python)
.assign(chat_history=get_chat_history)
.assign(response=prompt | llm | StrOutputParser())
.pick(["tool_output", "response"])
)