From 900d90d138b55a562bb8947260450e1ccf8d28e7 Mon Sep 17 00:00:00 2001 From: taogelb <792557231@qq.com> Date: Fri, 19 Dec 2025 02:34:24 +0800 Subject: [PATCH] =?UTF-8?q?"feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=80=E5=8F=B6?= =?UTF-8?q?=E4=BF=B3=E5=BF=83=E4=BF=B3=E5=8F=A5=20Agent=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent.py" | 75 +++++++++ ...00\345\217\266\344\277\263\345\277\203.md" | 150 ++++++++++++++++++ 2 files changed, 225 insertions(+) create mode 100644 "\344\275\234\345\223\201\346\217\220\344\272\244/agent.py" create mode 100644 "\344\275\234\345\223\201\346\217\220\344\272\244/\344\270\200\345\217\266\344\277\263\345\277\203.md" diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/agent.py" "b/\344\275\234\345\223\201\346\217\220\344\272\244/agent.py" new file mode 100644 index 0000000..532d4e5 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/agent.py" @@ -0,0 +1,75 @@ +from lazyllm import OnlineChatModule, ReactAgent, WebModule +from lazyllm.tools import fc_register + +# ---------------------------- +# 初始化在线大模型 +# ---------------------------- +llm = OnlineChatModule( + source='sensenova', + stream=False, + model='Qwen3-235B' # 替换为可用模型 +) + +# ---------------------------- +# 原 prompt 保持不变 +# ---------------------------- +prompt = """ +你是一叶俳心,一个俳句助手。 +当用户首次访问时,先用自然口语自我介绍:“你好呀,我是一叶俳心,很高兴见到你!我可以帮你创作五七五格式的俳句。” +然后等待用户提供主题或开头,不要主动生成俳句。 +俳句创作要求: +1. 第一行五个音节,第二行七个音节,第三行五个音节 +2. 内容体现自然意境和季节元素,例如春天写樱花、春风,夏天写荷花、蝉鸣,秋天写红叶、凉风,冬天写雪花、暖阳 +3. 语言简洁优美,押韵自然 +4. 如果用户未提供主题或开头,可以友好提示用户提供一个主题 + +生成俳句时请严格遵守五七五格式: +第一行必须5个汉字 +第二行必须7个汉字 +第三行必须5个汉字 +请不要少于或多于这个字数 +示例: +春风拂面笑 +樱花随风飘落 +心情暖如春 +""" + +# ---------------------------- +# 注册工具函数(占位) +# ---------------------------- +@fc_register +def haiku_tool(theme: str) -> str: + """ + 俳句生成工具(占位) + + Args: + theme (str): 用户提供的俳句主题或开头 + + Returns: + str: 原始主题(真实生成由 Agent prompt 完成) + """ + return theme + +# ---------------------------- +# 创建 Agent +# ---------------------------- +agent = ReactAgent( + llm=llm, + tools=["haiku_tool"], # 使用注册的工具名 + prompt=prompt, + stream=False +) + +# ---------------------------- +# 启动 Web 界面(兼容旧版 LazyLLM) +# ---------------------------- +web_ui = WebModule( + agent, + port=8846, + title="一叶俳心" +) + +try: + web_ui.start().wait() +except Exception as e: + print("Web 服务启动失败:", e) diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\344\270\200\345\217\266\344\277\263\345\277\203.md" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\344\270\200\345\217\266\344\277\263\345\277\203.md" new file mode 100644 index 0000000..05df071 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\344\270\200\345\217\266\344\277\263\345\277\203.md" @@ -0,0 +1,150 @@ +# 一叶俳心 + + + +## 1. 项目介绍 + +**项目名称**:一叶俳心 — 俳句智能助手 + +**项目概述**: + “一叶俳心”是一款基于大语言模型的俳句创作智能助手。用户可以通过自然语言输入主题或开头,系统会自动生成符合五七五格式的俳句。 + 项目核心目标是让 AI 理解用户需求,并根据季节、自然意境生成优美俳句,强调语言简洁优美、押韵自然,并严格遵守五七五格式。 + +**核心功能**: + +1. **自然语言交互**:用户输入主题或开头,AI 自动理解意图。 +2. **俳句创作**:严格五七五格式,体现季节元素和自然意境。 +3. **Web 界面**:提供可视化交互平台,用户可在线体验创作过程。 +4. **交互智能化**:当用户只打招呼或未提供主题时,AI 会引导用户提供主题。 + +------ + +## 2. 成员详情 + +| 姓名 | 角色 | 贡献内容 | +| -------- | ------------------ | ------------------------------------------------------------ | +| Eternity | 项目负责人兼开发者 | 完成整体架构设计、Agent 集成、Web 界面开发、Prompt 设计与工具函数实现 | + +------ + +## 3. 技术栈 + +- **语言**:Python 3.10 +- **大语言模型集成**:LazyLLM +- **Agent 构建**:ReactAgent + fc_register 工具注册机制 +- **HTTP/请求工具**:HttpRequest(LazyLLM 内置) +- **Web 前端**:LazyLLM WebModule +- **依赖库**:httpx、re、json +- **运行环境**:本地 Windows / 虚拟环境 venv + +------ + +## 4. 接口设计 + +### 4.1 用户输入接口 + +- **类型**:自然语言文本 +- **参数**: + - `theme`(str):用户提供的俳句主题或开头 + +### 4.2 AI 工具接口 + +- **函数名**:`haiku_tool` +- **参数**: + - `theme: str` — 用户提供主题 +- **返回**: + - `str` — 如果用户只是打招呼或未提供主题,返回引导提示;否则返回原始主题供 Agent prompt 创作俳句 +- **描述**: + - 用于区分用户意图(打招呼 / 提供主题),保证输出简洁自然 + +### 4.3 Web 界面 + +- **模块**:`WebModule` +- **端口**:8846 +- **功能**:提供在线交互界面,用户输入主题后,Agent 自动生成俳句并返回 +- **可视化**:网页显示生成的五七五格式俳句 + +------ + +## 5. 环境准备 + +LazyLLM 基于 Python 开发,我们需要保证系统中已经安装好了 `Python(3.09-3.11)`, `Pip ` + +本次实验手册基于 **python 3.10** 操作, python 3.13 可能不兼容 + IDE 可以选用:`Trae` 、`Pycharm`、`VSCode` 等等等 + + + +在 IDE 中新建一个本次项目的文件夹,并在终端中打开 + +------ + +![image-20251219005133146](C:\Users\taogeliubi\AppData\Roaming\Typora\typora-user-images\image-20251219005133146.png) + +在终端中创建一个虚拟环境名为`lazyllm-venv`并激活: + +```bash +python -m venv lazyllm-venv +lazyllm-venv\Scripts\Activate.ps1 +``` + +如果正常运行,你可以在命令行的开头看到 (lazyllm-venv) 的提示。接下来我们的操作都在这个虚拟环境中进行。 + +在控制台中输入`pip3 install lazyllm -i https://pypi.tuna.tsinghua.edu.cn/simple `,等待安装结束 + +![image-20251219005252091](C:\Users\taogeliubi\AppData\Roaming\Typora\typora-user-images\image-20251219005252091.png) + +LazyLLM 支持线上调用和本地调用 +**本文演示方法为线上调用**,需要提供相应平台的API Key。LazyLLM框架提供了自动调用平台API Key的功能,使用前需要将API Key设置为环境变量,并在调用时指定平台和模型名称,即可实现线上模型的调用。 +LazyLLM目前支持以下平台: + +| 平台 | 需要设置的环境变量 | 官方获取链接 | +| -------- | ----------------------------------------------------------- | ------------------------------------------------------------ | +| 日日新 | `LAZYLLM_SENSENOVA_API_KEY`, `LAZYLLM_SENSENOVA_SECRET_KEY` | [日日新API密钥获取](https://console.sensecore.cn/help/docs/model-as-a-service/nova/) | +| OpenAI | `LAZYLLM_OPENAI_API_KEY` | [OpenAI API密钥获取](https://platform.openai.com/api-keys) | +| 智谱 | `LAZYLLM_GLM_API_KEY` | [智谱API密钥获取](https://open.bigmodel.cn/usercenter/apikeys) | +| Kimi | `LAZYLLM_KIMI_API_KEY` | [Kimi API密钥获取](https://platform.moonshot.cn/) | +| 通义千问 | `LAZYLLM_QWEN_API_KEY` | [通义千问API密钥获取](https://help.aliyun.com/zh/dashscope/developer-reference/use-qwen-by-api) | +| 豆包 | `LAZYLLM_DOUBAO_API_KEY` | [豆包API密钥获取](https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey) | + +下面演示如何在商汤大装置(SenseCore)平台申请API Key:我是在这个平台获取的api + +1. 进入sensecore官网注册页面并进行账号注册: +2. 进入万象模型开发平台 + +3. 点击`立即体验` -`服务管理` 开通需要的模型 + +windows 配置方法 + + +```bash + - 右键点击"此电脑"或"我的电脑",选择"属性" + - 点击"高级系统设置" + - 在"系统属性"窗口中点击"环境变量" + - 在"系统变量"或"用户变量"区域点击"新建" + - 输入变量名(如`LAZYLLM_SENSENOVA_API_KEY`)和变量值(您的"API密钥") + - 点击"确定"保存 + - 点击"确定"关闭所有窗口 + - 重新启动命令提示符或PowerShell以使更改生效 +``` + +到这里就配置完成了 + + + +尝试在刚刚创建的的虚拟环境下运行以下代码: + +```python +import lazyllm + +chat = lazyllm.OnlineChatModule(source='sensenova',model='Qwen3-235B') +while True: + query = input("query(enter 'quit' to exit): ") + if query == "quit": + break + res = chat.forward(query) + print(f"answer: {res}") +``` + +视频演示:通过网盘分享的文件:一叶俳心.mp4 +链接: https://pan.baidu.com/s/1XS65QmRUhFT1K96Um3FHYA?pwd=hhif 提取码: hhif -- Gitee