Spaces:
Running
Running
import asyncio | |
import time | |
from lagent.agents.stream import PLUGIN_CN, get_plugin_prompt | |
from lagent.distributed import AsyncHTTPAgentClient, AsyncHTTPAgentServer, HTTPAgentClient, HTTPAgentServer | |
from lagent.llms import INTERNLM2_META | |
from lagent.schema import AgentMessage | |
from lagent.utils import create_object | |
loop = asyncio.new_event_loop() | |
asyncio.set_event_loop(loop) | |
server = HTTPAgentServer( | |
'1', | |
{ | |
'type': 'lagent.agents.AsyncAgent', | |
'llm': { | |
'type': 'lagent.llms.AsyncLMDeployPipeline', | |
'path': 'internlm/internlm2_5-7b-chat', | |
'meta_template': INTERNLM2_META, | |
} | |
}, | |
port=8090, | |
) | |
print(server.is_alive) | |
message = AgentMessage(sender='user', content='hello') | |
result = server(message) | |
print(result) | |
server.shutdown() | |
# math coder | |
server = AsyncHTTPAgentServer( | |
'1', | |
{ | |
'type': 'lagent.agents.AsyncMathCoder', | |
'llm': { | |
'type': 'lagent.llms.AsyncLMDeployPipeline', | |
'path': 'internlm/internlm2_5-7b-chat', | |
'meta_template': INTERNLM2_META, | |
'tp': 1, | |
'top_k': 1, | |
'temperature': 1.0, | |
'stop_words': ['<|im_end|>', '<|action_end|>'], | |
'max_new_tokens': 1024, | |
}, | |
'interpreter': { | |
'type': 'lagent.actions.AsyncIPythonInterpreter', | |
'max_kernels': 100 | |
}, | |
}, | |
port=8091, | |
) | |
message = AgentMessage( | |
sender='user', | |
content= | |
('Marie is thinking of a multiple of 63, while Jay is thinking of a factor ' | |
'of 63. They happen to be thinking of the same number. There are two ' | |
'possibilities for the number that each of them is thinking of, one ' | |
'positive and one negative. Find the product of these two numbers.')) | |
result = server(message) | |
print(loop.run_until_complete(result)) | |
print(server.state_dict()) | |
client = AsyncHTTPAgentClient(port=8091) | |
result = client('hello', session_id=1) | |
print(loop.run_until_complete(result)) | |
print(client.state_dict(1)) | |
client = HTTPAgentClient(port=8091) | |
print(client.state_dict(1)) | |
print(client('introduce yourself', session_id=1)) | |
print(client.state_dict(1)) | |
server.shutdown() | |
# plugins | |
plugins = [dict(type='lagent.actions.AsyncArxivSearch')] | |
server_cfg = dict( | |
type='lagent.distributed.AsyncHTTPAgentServer', | |
gpu_id='1', | |
config={ | |
'type': 'lagent.agents.AsyncAgentForInternLM', | |
'llm': { | |
'type': 'lagent.llms.AsyncLMDeployPipeline', | |
'path': 'internlm/internlm2_5-7b-chat', | |
'meta_template': INTERNLM2_META, | |
'tp': 1, | |
'top_k': 1, | |
'temperature': 1.0, | |
'stop_words': ['<|im_end|>', '<|action_end|>'], | |
'max_new_tokens': 1024, | |
}, | |
'plugins': plugins, | |
'output_format': { | |
'type': 'lagent.prompts.parsers.PluginParser', | |
'template': PLUGIN_CN, | |
'prompt': get_plugin_prompt(plugins), | |
} | |
}, | |
port=8091, | |
) | |
server = create_object(server_cfg) | |
tic = time.time() | |
coros = [ | |
server(query, session_id=i) | |
for i, query in enumerate(['LLM智能体方向的最新论文有哪些?'] * 50) | |
] | |
res = loop.run_until_complete(asyncio.gather(*coros)) | |
print('-' * 120) | |
print(f'time elapsed: {time.time() - tic}') | |
server.shutdown() | |