Closed natureLanguageQing closed 3 days ago
This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。
This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。
Feature request
目前,paddlenlp 的大模型问答功能仅支持单轮问答。为了充分发挥大型语言模型的潜力,建议增强其对话功能,支持多轮对话、agent对话和工具对话。同时,当前的设计将命令行和业务组件混合在一起,建议明确命令行负责启动接口,代码负责实现业务组件,以提升代码的可维护性和扩展性。
当前实现:
python 复制代码 from paddlenlp.transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B") model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-0.5B", dtype="float16") input_features = tokenizer("你好!请自我介绍一下。", return_tensors="pd") outputs = model.generate(**input_features, max_length=128) print(tokenizer.batch_decode(outputs[0])) 输出:
css 复制代码 ['我是一个AI语言模型,我可以回答各种问题,包括但不限于:天气、新闻、历史、文化、科学、教育、娱乐等。请问您有什么需要了解的吗?'] 问题:
单轮对话的局限性: 当前实现仅支持单轮问答,无法处理更复杂的对话交互。 对话类型的缺乏: 现有实现未涵盖多轮对话、agent对话和工具对话等重要对话类型。 命令行与业务组件混合: 目前的设计将命令行启动与业务组件实现混合,可能影响代码的可维护性和扩展性。
Motivation
建议的改进:
多轮对话支持:
目标: 提升模型对话能力,支持多轮对话,能够记住上下文并维持对话状态。 实现建议: 引入对话上下文管理功能,将用户的对话历史纳入模型输入。 示例代码: python 复制代码 conversation_history = ["你好!请自我介绍一下。"] input_features = tokenizer(conversation_history[-1], return_tensors="pd") outputs = model.generate(**input_features, max_length=128) response = tokenizer.batch_decode(outputs[0]) conversation_history.append(response[0]) agent对话功能:
目标: 实现更复杂的对话代理(agent),处理特定任务或回应特定的用户请求。 实现建议: 开发模块支持对话代理功能,如任务执行和指令处理。 示例代码: 在对话中插入 agent 的功能调用,例如检索信息、执行操作等。 工具对话功能:
目标: 支持模型与外部工具的集成,通过对话自动调用工具或服务。 实现建议: 设计 API 接口与外部工具集成,如天气查询、翻译等。 示例代码: 用户询问天气时,模型调用天气 API 并返回结果。 明确命令行与业务组件职责:
目标: 将命令行启动与业务逻辑实现分开,提升代码的可维护性。 实现建议: 命令行接口: 负责启动程序和处理用户输入。 业务组件: 负责实际的业务逻辑和模型交互。 示例代码结构: bash 复制代码
命令行启动脚本
python run_model.py --config config.json python 复制代码
run_model.py
from my_model_module import run if name == "main": run() python 复制代码
my_model_module.py
def run():
业务逻辑实现
Your contribution
多轮对话: 增强模型支持多轮对话,改进对话管理和上下文维持能力。 agent对话: 实现对话代理功能,支持复杂的任务和指令处理。 工具对话: 集成外部工具,扩展模型的功能。 代码结构优化: 明确命令行与业务组件的职责,提升代码的可维护性和扩展性。 感谢团队的持续投入和贡献,希望这些建议能对 paddlenlp 的发展有所帮助。如果需要进一步讨论或协助,请随时联系我。