Lagent 使用教程
1. 项目介绍
Lagent 是一个轻量级框架,用于构建基于大型语言模型(LLM)的代理。它受到了 PyTorch 设计哲学的启发,期望通过神经网络层的类比,使得工作流程更加清晰直观。用户只需要专注于以 Pythonic 的方式创建层并定义它们之间的消息传递。
2. 项目快速启动
首先,您需要从源代码安装 Lagent。在您的命令行中执行以下命令:
git clone https://github.com/InternLM/lagent.git
cd lagent
pip install -e .
以下是一个简单的示例,展示了如何使用 Lagent 创建一个代理,并处理用户消息:
from typing import Dict, List
from lagent.agents import Agent
from lagent.schema import AgentMessage
from lagent.llms import VllmModel, INTERNLM2_META
# 初始化模型
llm = VllmModel(
path='Qwen/Qwen2-7B-Instruct',
meta_template=INTERNLM2_META,
tp=1,
top_k=1,
temperature=1.0,
stop_words=['<|im_end|>'],
max_new_tokens=1024,
)
# 设置系统提示
system_prompt = '你的回答只能从“典”、“孝”、“急”三个字中选一个。'
# 创建代理
agent = Agent(llm, system_prompt)
# 创建用户消息
user_msg = AgentMessage(sender='user', content='今天天气情况')
# 代理响应
bot_msg = agent(user_msg)
# 打印代理的响应
print(bot_msg.content) # 输出: 急
3. 应用案例和最佳实践
Lagent 可以用于创建多代理应用,下面是一个简单的聚合器实现,它可以接收少量示例(few-shot):
from typing import List, Union
from lagent.memory import Memory
from lagent.prompts import StrParser
from lagent.agents.aggregator import DefaultAggregator
class FewshotAggregator(DefaultAggregator):
def __init__(self, few_shot: List[dict] = None):
self.few_shot = few_shot or []
def aggregate(self, messages: Memory, name: str, parser: StrParser = None, system_instruction: Union[str, dict, List[dict]] = None) -> List[dict]:
_message = []
if system_instruction:
_message.extend(self.aggregate_system_intruction(system_instruction))
_message.extend(self.few_shot)
messages = messages.get_memory()
for message in messages:
if message.sender == name:
_message.append(dict(role='assistant', content=str(message.content)))
else:
user_message = message.content
if len(_message) > 0 and _message[-1]['role'] == 'user':
_message[-1]['content'] += user_message
else:
_message.append(dict(role='user', content=user_message))
return _message
# 使用自定义聚合器
agent = Agent(
llm,
aggregator=FewshotAggregator([
{"role": "user", "content": "今天天气"},
{"role": "assistant", "content": "【晴】"}
])
)
# 创建用户消息
user_msg = AgentMessage(sender='user', content='昨天天气')
# 代理响应
bot_msg = agent(user_msg)
# 打印代理的响应
print(bot_msg.content) # 输出: 【多云转晴,夜间有轻微降温】
4. 典型生态项目
Lagent 框架可以应用于各种场景,包括但不限于对话系统、智能助手、自动化任务执行等。您可以查看 Lagent 的官方仓库和社区项目,以获取更多关于如何在实际应用中使用 Lagent 的灵感。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考