5.4 KiB
Quick Start
Here is a simple user guide.
Step0: Configuration
- start es
- set env APIKEY / host
- python -m model_service -port 8000 -config simple/path
Step1: Own an agent
Assume you have a runnable agent code. Here, we use a basic LLM combined with a simple react framework including three tools(code, web_search, terminate) as an example.
class MxcAgent(BaseModel):
llm: BaseLLM | None = Field(default=None)
max_steps: int = Field(default=10)
tools: List[BaseTool] = Field(default_factory=list)
def think(self, query: str, **kwargs) -> bool:
...
def act(self, **kwargs):
...
def run(self, query: str, **kwargs) -> List[Message]:
messages: List[Message] = []
for i in range(self.max_steps):
should_act: bool = self.think(query, messages=messages, **kwargs)
if should_act:
self.act(messages=messages, **kwargs)
else:
break
return messages
query = "Analyze Xiaomi Corporation
agent = MxcAgent(llm=OpenAICompatibleBaseLLM(model_name="qwen3-32b", temperature=0.0001),
max_steps=10,
tools=[CodeTool(), DashscopeSearchTool(), TerminateTool()])
messages = agent.run(query=query)
answer = messages[-1].content
print(answer)
Step2: Implement AgentWrapper
In order to utilize the context generator and summarizer capabilities of beyondagent, please inherit from MxcAgent and BaseAgentWrapperMixin to implement the AgentWrapper.
Here, you need to customize two parts:
- how to integrate the content message(insight) generated by the
self.context_generatorinto the context. - implement the execute function to output the trajectory.
Below is a simple example of integrating trajectory-level insight into the context.
from beyondagent.core.module.agent_wrapper.base_agent_wrapper import BaseAgentWrapperMixin
class MxcAgentWrapper(MxcAgent, BaseAgentWrapperMixin):
def execute(self, query: str, **kwargs) -> Trajectory:
trajectory = Trajectory(steps=messages, query=query)
context_msg = self.context_generator.execute(trajectory=trajectory)
new_query = f"""
previous insight:
{context_msg.content}
Please consider the helpful parts from these in answering the question, to make the response more comprehensive and substantial.
user query:
{query}
""".strip()
messages = self.run(new_query, **kwargs)
return Trajectory(query=query, steps=messages, answer=messages[-1].content, done=True)
Step3: Run AgentRunner with insight
Once you have completed the implementation of the AgentWrapper class, you will be able to utilize the capabilities of beyondagent.
Here is an example using SimpleAgentRunner. We first executed two historical tasks, then summarized the experience and made it persistent. Finally, we utilized the historical experience in a new task.
from beyondagent.core.module.runner.simple_agent_runner import SimpleAgentRunner
mxc_agent_wrapper = MxcAgentWrapper(llm=OpenAICompatibleBaseLLM(model_name="qwen3-32b", temperature=0.0001),
max_steps=10,
tools=[CodeTool(), DashscopeSearchTool(), TerminateTool()])
agent_runner = SimpleAgentRunner(agent_wrapper=mxc_agent_wrapper, summarizer="default", context_generator="default")
# historical tasks
agent_runner.rollout_trajectory(query="Analyze the company Tesla.")
agent_runner.rollout_trajectory(query="Analyze the company Apple.")
# summary insights and store them
agent_runner.summary_and_store()
# run agent with historical insights
trajectory = agent_runner.rollout_trajectory(query="Analyze the company Xiaomi Corporation.")
Step4: Evaluation(Optional)
If we have a reward function that allows us to compare the performance before and after adding context, we can try this part.
Use run_agent to obtain the answer from the original agent (answer1), and use run_agent_wrapper to get the answer
with added insights and experience (answer2).
Here, the reward function is used to compare and score the two answers. The reward.reward_value indicates the win rate
of answer2.
# task
query = "Analyze Xiaomi Corporation."
# run agent
agent = MxcAgent(llm=OpenAICompatibleBaseLLM(model_name="qwen3-32b", temperature=0.0001),
max_steps=10,
tools=[CodeTool(), DashscopeSearchTool(), TerminateTool()])
messages = agent.run(query=query)
answer1 = messages[-1].content
# agent runner: Assume we already have some historical experience.
mxc_agent_wrapper = MxcAgentWrapper(llm=OpenAICompatibleBaseLLM(model_name="qwen3-32b", temperature=0.0001),
max_steps=10,
tools=[CodeTool(), DashscopeSearchTool(), TerminateTool()])
agent_runner = SimpleAgentRunner(agent_wrapper=mxc_agent_wrapper, summarizer="default", context_generator="default")
trajectory = agent_runner.rollout_trajectory(query=query)
answer2 = trajectory.answer
# pair-wise LLM evaluation
from beyondagent.core.module.reward_fn.simple_reward_fn import SimpleRewardFn
reward_fn = SimpleRewardFn(llm=OpenAICompatibleBaseLLM(model_name="qwen3-32b", temperature=0.0001))
reward = reward_fn.execute(query=query, answer1=answer1, answer2=answer2, eval_times=5)
print(f"final reward={reward.reward_value}")