MCPcopy Create free account
hub / github.com/Alibaba-NLP/DeepResearch / WebWalker

Class WebWalker

WebAgent/WebWalker/src/agent.py:19–208  ·  view source on GitHub ↗

This explorer agent use ReAct format to call tools

Source from the content-addressed store, hash-verified

17 'What is the {name_for_human} API useful for? {description_for_model} Parameters: {parameters} {args_format}')
18
19class WebWalker(FnCallAgent):
20 """This explorer agent use ReAct format to call tools"""
21
22 def __init__(self,
23 function_list: Optional[List[Union[str, Dict, BaseTool]]] = None,
24 llm: Optional[Union[Dict, BaseChatModel]] = None,
25 system_message: Optional[str] = DEFAULT_SYSTEM_MESSAGE,
26 name: Optional[str] = None,
27 description: Optional[str] = None,
28 files: Optional[List[str]] = None,
29 **kwargs):
30 super().__init__(function_list=function_list,
31 llm=llm,
32 system_message=system_message,
33 name=name,
34 description=description,
35 files=files,
36 **kwargs)
37 self.extra_generate_cfg = merge_generate_cfgs(
38 base_generate_cfg=self.extra_generate_cfg,
39 new_generate_cfg={'stop': ['Observation:', 'Observation:\n']},
40 )
41 self.client = OpenAI(
42 api_key=llm['api_key'],
43 base_url=llm['model_server'],
44 )
45 self.llm_cfg = llm
46 self.momery = []
47
48 def observation_information_extraction(self, query, observation):
49 user_prompt = "- Query: {query}\n- Observation: {observation}".format(query=query, observation=observation)
50 messages = [
51 {'role': 'system', 'content': STSTEM_CRITIIC_INFORMATION},
52 {'role': 'user', 'content': user_prompt}]
53 max_retries = 10
54 for attempt in range(max_retries):
55 try:
56 response = self.client.chat.completions.create(
57 model=self.llm_cfg['model'],
58 response_format={"type": "json_object"},
59 messages=messages
60 )
61 print(response.choices[0].message.content)
62 # response_content = json.loads(response.choices[0].message.content)
63 if "true" in response.choices[0].message.content:
64 try:
65 return json.loads(response.choices[0].message.content)["information"]
66 except:
67 return response.choices[0].message.content
68 else:
69 return None
70 except Exception as e:
71 print(e)
72 if attempt < max_retries - 1:
73 time.sleep(1 * (2 ** attempt)) # Exponential backoff
74 else:
75 raise e # Raise the exception if the last retry fails
76

Callers 1

app.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected