Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question for React Agent #296

Open
aesashi opened this issue Feb 14, 2025 · 1 comment
Open

Question for React Agent #296

aesashi opened this issue Feb 14, 2025 · 1 comment

Comments

@aesashi
Copy link

aesashi commented Feb 14, 2025

I have taken a look at inside lagent_example.py and react.py.

it seems like the react prompt does not incorporate the previous output as new input.
Is it a systematic mistake, or am I missing some implementation chain?
So, where does the agent inject the question (user query) or environmental output?

So the prompt is like below

class ActionCall(BaseModel):
    name: str = Field(description='调用的函数名称') # The name of the function being called
    parameters: Dict = Field(description='调用函数的参数') # The parameters for the function call

class ActionFormat(BaseModel):
    thought_process: str = Field(
        description='描述当前所处的状态和已知信息。这有助于明确目前所掌握的信息和接下来的搜索方向。' 
        #description='Describe the current state and known information. This helps clarify what is known and the next search direction.'
    )
    action: ActionCall = Field(description='当前步骤需要执行的操作,包括函数名称和参数。') # description='The action to be performed at this step, including the function name and parameters.'


class FinishFormat(BaseModel):
    thought_process: str = Field(
        description='描述当前所处的状态和已知信息。这有助于明确目前所掌握的信息和接下来的搜索方向。'
        #'Describe the current state and known information. This helps clarify what is known and the next search direction.'
    )
    conclusion: str = Field(description='总结当前的搜索结果,回答问题。') # 'Summarize the current search results and provide an answer.'

prompt_template = PromptTemplate(select_action_template)
output_format = JSONParser(output_format_template, function_format=ActionFormat, finish_format=FinishFormat)

select_action_template = """你是一个可以调用外部工具的助手,可以使用的工具包括:
{action_info}
{output_format}
开始!"""

"""
Translation
select_action_template = '''You are an assistant capable of calling external tools. The available tools include:
{action_info}
{output_format}
Begin!
"""

output_format_template = """如果使用工具请遵循以下格式回复:
{function_format}

如果你已经知道了答案,或者你不需要工具,请遵循以下格式回复
{finish_format}"""

''' Translation
output_format_template = """If you need to use a tool, please follow this response format:
{function_format}

If you already know the answer or do not need a tool, please follow this response format:
{finish_format}"""

@braisedpork1964
Copy link
Collaborator

This ReAct prompt is used as a system message.

The user query and each round of assistant responses and environmental feedbacks are stored in the agent's memory and then assembled to generate the next round of responses.

See https://github.com/InternLM/lagent/blob/main/lagent/agents/agent.py#L86

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants