Spaces:
Sleeping
Sleeping
import os | |
from datetime import datetime | |
from lagent.actions import ActionExecutor, BingBrowser | |
import mindsearch.agent.models as llm_factory | |
from mindsearch.agent.mindsearch_agent import (MindSearchAgent, | |
MindSearchProtocol) | |
from mindsearch.agent.mindsearch_prompt import ( | |
FINAL_RESPONSE_CN, FINAL_RESPONSE_EN, GRAPH_PROMPT_CN, GRAPH_PROMPT_EN, | |
fewshot_example_cn, fewshot_example_en, graph_fewshot_example_cn, | |
graph_fewshot_example_en, searcher_context_template_cn, | |
searcher_context_template_en, searcher_input_template_cn, | |
searcher_input_template_en, searcher_system_prompt_cn, | |
searcher_system_prompt_en) | |
LLM = {} | |
def init_agent(lang='cn', model_format='internlm_server',search_engine='DuckDuckGoSearch'): | |
llm = LLM.get(model_format, None) | |
if llm is None: | |
llm_cfg = getattr(llm_factory, model_format) | |
if llm_cfg is None: | |
raise NotImplementedError | |
llm_cfg = llm_cfg.copy() | |
llm = llm_cfg.pop('type')(**llm_cfg) | |
LLM[model_format] = llm | |
interpreter_prompt = GRAPH_PROMPT_CN if lang == 'cn' else GRAPH_PROMPT_EN | |
plugin_prompt = searcher_system_prompt_cn if lang == 'cn' else searcher_system_prompt_en | |
if not model_format.lower().startswith('internlm'): | |
interpreter_prompt += graph_fewshot_example_cn if lang == 'cn' else graph_fewshot_example_en | |
plugin_prompt += fewshot_example_cn if lang == 'cn' else fewshot_example_en | |
agent = MindSearchAgent( | |
llm=llm, | |
protocol=MindSearchProtocol(meta_prompt=datetime.now().strftime( | |
'The current date is %Y-%m-%d.'), | |
interpreter_prompt=interpreter_prompt, | |
response_prompt=FINAL_RESPONSE_CN | |
if lang == 'cn' else FINAL_RESPONSE_EN), | |
searcher_cfg=dict( | |
llm=llm, | |
plugin_executor=ActionExecutor( | |
BingBrowser(searcher_type=search_engine, | |
topk=6, | |
api_key=os.environ.get('BING_API_KEY', | |
'YOUR BING API'))), | |
protocol=MindSearchProtocol( | |
meta_prompt=datetime.now().strftime( | |
'The current date is %Y-%m-%d.'), | |
plugin_prompt=plugin_prompt, | |
), | |
template=dict(input=searcher_input_template_cn | |
if lang == 'cn' else searcher_input_template_en, | |
context=searcher_context_template_cn | |
if lang == 'cn' else searcher_context_template_en)), | |
max_turn=10) | |
return agent | |