| | |
| | from typing import List, Union |
| |
|
| | import json |
| |
|
| | from .base import BaseAgentTemplate |
| |
|
| |
|
| | class ToolBenchAgentTemplate(BaseAgentTemplate): |
| |
|
| | def _format_tools(self, tools: List[Union[str, dict]], system: str, user_message=None) -> str: |
| | for i, tool in enumerate(tools): |
| | tools[i] = self.unwrap_tool(tool) |
| | tools = json.dumps(tools, ensure_ascii=False) |
| | return f"""You can use many tools(functions) to do the following task. |
| | First I will give you the task description, and your task start. |
| | At each step, you need to give your thought to analyze the status now and what to do next, \ |
| | with a function call to actually execute your step. Your output should follow this format: |
| | Thought: |
| | Action: |
| | Action Input: |
| | |
| | After the call, you will get the call result, and you are now in a new state. |
| | Then you will analyze your status now, then decide what to do next... |
| | After many (Thought-call) pairs, you finally perform the task, then you can give your final answer. |
| | Remember: |
| | 1.the state change is irreversible, you can't go back to one of the former state, if you want to restart the task, \ |
| | say \"I give up and restart\". |
| | 2.All the thought is short, at most in 5 sentence. |
| | 3.You can do more then one try, so if your plan is to continuously try some conditions, \ |
| | you can do one of the conditions per try. |
| | Let's Begin! |
| | Task description: You should use functions to help handle the real time user queries. Remember: |
| | 1.ALWAYS call \"Finish\" function at the end of the task. And the final answer should contain enough information \ |
| | to show to the user,If you can't handle the task, \ |
| | or you find that function calls always fail(the function is not valid now), \ |
| | use function Finish->give_up_and_restart. |
| | 2.Do not use origin tool names, use only subfunctions' names. |
| | Specifically, you have access to the following APIs: {tools}""" |
| |
|