Skip to content

Commit

Permalink
fix: xml component working properly (#3822)
Browse files Browse the repository at this point in the history
* 📝 (XMLAgent.py): Add support for chat history data input in XMLAgentComponent to enhance agent functionality and interaction with Language Model.

* [autofix.ci] apply automated fixes

* 📝 (XMLAgent.py): Update user_prompt to system_prompt and adjust its content for better clarity and consistency
🐛 (XMLAgent.py): Ensure user_prompt contains 'input' key before creating agent runnable to prevent errors

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
  • Loading branch information
Cristhianzl and autofix-ci[bot] authored Sep 18, 2024
1 parent bad009c commit 53c99e9
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions src/backend/base/langflow/components/agents/XMLAgent.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from typing import List, Optional
from langchain.agents import create_xml_agent
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate, HumanMessagePromptTemplate

from langflow.base.agents.agent import LCToolsAgentComponent
from langflow.inputs import MultilineInput
from langflow.inputs.inputs import HandleInput
from langflow.inputs.inputs import DataInput, HandleInput
from langflow.schema import Data


class XMLAgentComponent(LCToolsAgentComponent):
Expand All @@ -12,14 +13,14 @@ class XMLAgentComponent(LCToolsAgentComponent):
icon = "LangChain"
beta = True
name = "XMLAgent"

inputs = LCToolsAgentComponent._base_inputs + [
HandleInput(name="llm", display_name="Language Model", input_types=["LanguageModel"], required=True),
DataInput(name="chat_history", display_name="Chat History", is_list=True, advanced=True),
MultilineInput(
name="user_prompt",
display_name="Prompt",
value="""
You are a helpful assistant. Help the user answer any questions.
name="system_prompt",
display_name="System Prompt",
info="System prompt for the agent.",
value="""You are a helpful assistant. Help the user answer any questions.
You have access to the following tools:
Expand All @@ -44,11 +45,22 @@ class XMLAgentComponent(LCToolsAgentComponent):
{agent_scratchpad}
""",
),
MultilineInput(
name="user_prompt", display_name="Prompt", info="This prompt must contain 'input' key.", value="{input}"
),
]

def get_chat_history_data(self) -> Optional[List[Data]]:
return self.chat_history

def create_agent_runnable(self):
if "input" not in self.user_prompt:
raise ValueError("Prompt must contain 'input' key.")
messages = [
HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=["input"], template=self.user_prompt))
("system", self.system_prompt),
("placeholder", "{chat_history}"),
HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=["input"], template=self.user_prompt)),
("ai", "{agent_scratchpad}"),
]
prompt = ChatPromptTemplate.from_messages(messages)
return create_xml_agent(self.llm, self.tools, prompt)

0 comments on commit 53c99e9

Please sign in to comment.