Browse Source

feat:laoyouf

laoyouf 7 months ago
parent
commit
e16ab035ce

+ 23 - 0
Co-creation-projects/laoyouf-aistory/.env.example

@@ -0,0 +1,23 @@
+# ============================================================================
+# HelloAgents 统一环境变量配置文件
+# ============================================================================
+# 复制此文件为 .env 并填入你的API密钥
+# 系统要求:Python 3.10+ (必需)
+
+# ============================================================================
+# 🚀 统一配置格式(推荐)
+# ============================================================================
+# 只需配置以下4个通用环境变量,框架会自动识别LLM提供商:
+
+# 模型名称
+LLM_MODEL_ID=your-model-name
+
+# API密钥
+LLM_API_KEY=your-api-key-here
+
+# 服务地址
+LLM_BASE_URL=your-api-base-url
+
+# 超时时间(可选,默认60秒)
+LLM_TIMEOUT=60
+

+ 54 - 0
Co-creation-projects/laoyouf-aistory/README.md

@@ -0,0 +1,54 @@
+# 项目名称
+
+> 智能故事(小说/剧本/诗歌)生成器
+
+## 📝 项目简介
+
+详细介绍你的项目:
+- 解决什么问题?根据用户输入的文体,主题,风格生成对应文体的故事
+- 有什么特色功能?自定义文体,主题,风格
+- 适用于什么场景?娱乐
+
+
+
+## 🛠️ 技术栈
+
+- HelloAgents框架
+
+
+## 🚀 快速开始
+
+### 环境要求
+
+- Python 3.10+
+- 其他要求
+
+### 安装依赖
+
+\`\`\`bash
+pip install -r requirements.txt
+\`\`\`
+
+### 配置API密钥
+
+\`\`\`bash
+# 创建.env文件
+cp .env.example .env
+
+# 编辑.env文件,填入你的API密钥
+\`\`\`
+
+### 运行项目
+
+\`\`\`bash
+# 启动Jupyter Notebook
+jupyter lab
+
+# 打开main.ipynb并运行
+\`\`\`
+
+
+
+## 🙏 致谢
+
+感谢Datawhale社区和Hello-Agents项目!教程帮助很大!疯狂安利

+ 462 - 0
Co-creation-projects/laoyouf-aistory/main.ipynb

@@ -0,0 +1,462 @@
+{
+ "cells": [
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# StoryGeneratorAgent - 智能故事生成助手\n",
+    "\n",
+    "本项目演示如何使用HelloAgents框架构建一个智能故事生成助手。\n",
+    "\n",
+    "## 📖 使用说明\n",
+    "\n",
+    "- **快速体验**: 运行「第0部分」的快速演示\n",
+    "- **完整功能**: 依次运行第1-4部分,体验完整的故事生成流程\n",
+    "- **参数调整**: 在第4部分修改 **generate_story()** 函数的参数,尝试不同故事类型\n"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "\n",
+    "## 第0部分:快速演示 ⚡\n",
+    "\n",
+    "如果你想快速了解项目功能,可以运行这个简化版本。"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "故事类型选择"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 选择故事类型(小说/剧本/诗歌)\n",
+    "story_type = input(\"请输入故事类型(小说/剧本/诗歌): \")\n",
+    "# 输入故事主题\n",
+    "theme = input(\"请输入故事主题: \")\n",
+    "# 选择故事风格\n",
+    "style = input(\"请输入故事风格: \")"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "生成故事"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n",
+    "# 快速演示 - 导入库和配置\n",
+    "from hello_agents import SimpleAgent, HelloAgentsLLM\n",
+    "from hello_agents.tools import Tool, ToolParameter\n",
+    "from typing import Dict, Any, List\n",
+    "import os\n",
+    "\n",
+    "# 配置LLM参数\n",
+    "os.environ[\"LLM_MODEL_ID\"] = \"Qwen/Qwen2.5-72B-Instruct\"\n",
+    "os.environ[\"LLM_API_KEY\"] = \"ms-fb406c2e-4246-4bf6-b0ad-7a686cccc270\"\n",
+    "os.environ[\"LLM_BASE_URL\"] = \"https://api-inference.modelscope.cn/v1/\"\n",
+    "os.environ[\"LLM_TIMEOUT\"] = \"60\"\n",
+    "\n",
+    "print(\"✅ 库导入和配置完成\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n",
+    "# 快速演示 - 定义故事生成工具\n",
+    "class StoryGeneratorTool(Tool):\n",
+    "    def __init__(self):\n",
+    "        super().__init__(name=\"story_generator\",\n",
+    "                            description=\"根据用户输入生成不同类型的故事内容\")\n",
+    "\n",
+    "    def run(self, parameters: Dict[str, Any]) -> str:\n",
+    "        # 获取用户输入参数\n",
+    "        story_type = parameters.get(\"type\", \"小说\")\n",
+    "        theme = parameters.get(\"theme\", \"奇幻冒险\")\n",
+    "        style = parameters.get(\"style\", \"轻松幽默\")\n",
+    "\n",
+    "        # 构造提示词\n",
+    "        prompt = f\"生成一个{story_type},主题是{theme},风格为{style}。\"\n",
+    "\n",
+    "        # 调用LLM生成故事\n",
+    "        llm = HelloAgentsLLM()\n",
+    "        response = llm.generate_text(prompt, max_tokens=1024)\n",
+    "\n",
+    "        return response\n",
+    "\n",
+    "    def get_parameters(self) -> List[ToolParameter]:\n",
+    "        return [\n",
+    "            ToolParameter(name=\"type\", type=\"string\", description=\"故事类型(小说/剧本/诗歌)\", required=True),\n",
+    "            ToolParameter(name=\"theme\", type=\"string\", description=\"故事主题\", required=True),\n",
+    "            ToolParameter(name=\"style\", type=\"string\", description=\"故事风格\", required=True)\n",
+    "        ]\n",
+    "\n",
+    "print(\"✅ 工具定义完成\")\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n",
+    "# 快速演示 - 创建工具注册表和智能体\n",
+    "from hello_agents import ToolRegistry\n",
+    "\n",
+    "quick_registry  = ToolRegistry()\n",
+    "quick_registry.register_tool(StoryGeneratorTool())\n",
+    "\n",
+    "# 创建智能体\n",
+    "agent = SimpleAgent(\n",
+    "    name=\"故事生成助手\",\n",
+    "    llm=HelloAgentsLLM(),\n",
+    "    system_prompt=\"你是经验丰富的故事创作者,能够根据用户提供的参数生成不同类型的故事内容。请确保故事符合要求的类型、主题和风格,并保持内容的连贯性和创意性。\",\n",
+    "    tool_registry=quick_registry\n",
+    ")\n",
+    "\n",
+    "print(\"✅ 智能体创建完成\")\n",
+    "print(f\"✅ 可用工具: {list(quick_registry._tools.keys())}\")\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n",
+    "# 生成并打印故事\n",
+    "print(\"=== 开始生成故事 ===\")\n",
+    "story = agent.run(f\"请根据以下参数生成一个故事:\\n- 类型:{story_type}\\n- 主题:{theme}\\n- 风格:{style}\")\n",
+    "print(story)\n",
+    "print(\"\\n✅ 故事生成完成!\")"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "\n",
+    "# 完整版代码审查系统\n",
+    "\n",
+    "下面是完整的代码审查系统,包含更强大的分析功能。"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 第1部分:环境配置"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 导入库\n",
+    "from hello_agents import SimpleAgent, HelloAgentsLLM\n",
+    "from hello_agents.tools import Tool, ToolParameter\n",
+    "from typing import Dict, Any, List\n",
+    "import os\n",
+    "\n",
+    "# 配置LLM参数\n",
+    "os.environ[\"LLM_MODEL_ID\"] = \"Qwen/Qwen2.5-72B-Instruct\"\n",
+    "os.environ[\"LLM_API_KEY\"] = \"ms-fb406c2e-4246-4bf6-b0ad-7a686cccc270\"\n",
+    "os.environ[\"LLM_BASE_URL\"] = \"https://api-inference.modelscope.cn/v1/\"\n",
+    "os.environ[\"LLM_TIMEOUT\"] = \"60\"\n",
+    "\n",
+    "print(\"✅ 库导入和配置完成\")"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 第2部分:定义故事生成工具"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 定义故事生成工具\n",
+    "class StoryGeneratorTool(Tool):\n",
+    "    def __init__(self):\n",
+    "        super().__init__(name=\"story_generator\",\n",
+    "                            description=\"根据用户输入生成不同类型的故事内容\")\n",
+    "\n",
+    "    def run(self, parameters: Dict[str, Any]) -> str:\n",
+    "        # 获取用户输入参数\n",
+    "        story_type = parameters.get(\"type\", \"小说\")\n",
+    "        theme = parameters.get(\"theme\", \"奇幻冒险\")\n",
+    "        style = parameters.get(\"style\", \"轻松幽默\")\n",
+    "\n",
+    "        # 构造提示词\n",
+    "        prompt = f\"生成一个{story_type},主题是{theme},风格为{style}。\"\n",
+    "\n",
+    "        # 添加类型特定的指导\n",
+    "        if story_type == \"小说\":\n",
+    "            prompt += \"请使用小说格式,以第三人称叙述,包含完整的情节发展和人物描写。\"\n",
+    "        elif story_type == \"剧本\":\n",
+    "            prompt += \"请使用剧本格式,包含场景描述、角色对话和动作指示。\"\n",
+    "        elif story_type == \"诗歌\":\n",
+    "            prompt += \"请使用诗歌格式,注意押韵和节奏感。\"\n",
+    "\n",
+    "        # 调用LLM生成故事\n",
+    "        llm = HelloAgentsLLM()\n",
+    "        response = llm.generate_text(prompt, max_tokens=1024)\n",
+    "\n",
+    "        return response\n",
+    "\n",
+    "    def get_parameters(self) -> List[ToolParameter]:\n",
+    "        return [\n",
+    "            ToolParameter(name=\"type\", type=\"string\", description=\"故事类型(小说/剧本/诗歌)\", required=True),\n",
+    "            ToolParameter(name=\"theme\", type=\"string\", description=\"故事主题\", required=True),\n",
+    "            ToolParameter(name=\"style\", type=\"string\", description=\"故事风格\", required=True)\n",
+    "        ]\n",
+    "\n",
+    "print(\"✅ 故事生成工具定义完成\")"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 第3部分:创建智能体"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 定义系统提示词\n",
+    "system_prompt = \"\"\"你是一位经验丰富的故事创作者,能够根据用户提供的参数生成不同类型的故事内容。\n",
+    "\n",
+    "你的任务是:\n",
+    "1. 根据用户指定的故事类型(小说/剧本/诗歌)生成相应格式的内容\n",
+    "2. 确保故事符合用户指定的主题和风格\n",
+    "3. 保持故事的连贯性和创意性\n",
+    "4. 根据需要使用预设的故事元素库\n",
+    "\n",
+    "生成故事时,请注意:\n",
+    "- 小说:以第三人称叙述,包含完整的情节发展和人物描写\n",
+    "- 剧本:使用标准剧本格式,包含场景描述、角色对话和动作指示\n",
+    "- 诗歌:注意押韵和节奏感,使用生动的意象和比喻\n",
+    "\n",
+    "请直接输出生成的故事内容,无需添加任何额外说明或解释。\n",
+    "\"\"\"\n",
+    "\n",
+    "# 导入工具注册表\n",
+    "from hello_agents import ToolRegistry\n",
+    "\n",
+    "# 创建工具注册表\n",
+    "tool_registry = ToolRegistry()\n",
+    "tool_registry.register_tool(StoryGeneratorTool())\n",
+    "\n",
+    "# 创建智能体\n",
+    "agent = SimpleAgent(\n",
+    "    name=\"智能故事生成器\",\n",
+    "    llm=HelloAgentsLLM(),\n",
+    "    system_prompt=system_prompt,\n",
+    "    tool_registry=tool_registry\n",
+    ")\n",
+    "\n",
+    "print(\"✅ 智能体创建完成\")\n",
+    "print(f\"智能体名称: {agent.name}\")\n",
+    "print(f\"可用工具: {list(tool_registry._tools.keys())}\")\n",
+    "\n",
+    "# 示例输入参数\n",
+    "sample_parameters = {\n",
+    "    \"type\": \"小说\",\n",
+    "    \"theme\": \"魔法森林中的冒险\",\n",
+    "    \"style\": \"轻松幽默\"\n",
+    "}"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 第4部分:生成并展示故事"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def generate_story(agent, parameters):\n",
+    "    # 生成故事\n",
+    "    story = agent.run(f\"请根据以下参数生成一个故事:\\n{', '.join([f'- {k}: {v}' for k, v in parameters.items()])}\")\n",
+    "\n",
+    "    # 返回故事内容\n",
+    "    return story"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "小说示例:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 小说参数\n",
+    "novel_parameters = {\n",
+    "    \"type\": \"小说\",\n",
+    "    \"theme\": \"魔法森林中的冒险\",\n",
+    "    \"style\": \"轻松幽默\"\n",
+    "}\n",
+    "\n",
+    "# 生成小说\n",
+    "print(\"=== 生成小说示例 ===\")\n",
+    "novelStory = generate_story(agent, novel_parameters)\n",
+    "print(novelStory)"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "剧本示例:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 剧本参数\n",
+    "script_parameters = {\n",
+    "    \"type\": \"剧本\",\n",
+    "    \"theme\": \"拯救被困的朋友\",\n",
+    "    \"style\": \"悬疑紧张\"\n",
+    "}\n",
+    "\n",
+    "# 生成剧本\n",
+    "print(\"=== 生成剧本示例 ===\")\n",
+    "scriptStory = generate_story(agent, script_parameters)\n",
+    "print(scriptStory)"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "诗歌示例:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 诗歌参数\n",
+    "poem_parameters = {\n",
+    "    \"type\": \"诗歌\",\n",
+    "    \"theme\": \"彩虹山的美景\",\n",
+    "    \"style\": \"浪漫温馨\"\n",
+    "}\n",
+    "\n",
+    "# 生成诗歌\n",
+    "print(\"=== 生成诗歌示例 ===\")\n",
+    "poemStory = generate_story(agent, poem_parameters)\n",
+    "print(poemStory)"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 第5部分:总结与展望\n",
+    "\n",
+    "\n",
+    "### 实现的功能\n",
+    "- ✅ 环境配置与LLM模型设置\n",
+    "- ✅ 小说/剧本/诗歌三种故事类型生成\n",
+    "- ✅ 根据用户指定主题和风格定制故事内容\n",
+    "- ✅ 交互式参数输入和故事生成\n",
+    "### 遇到的挑战\n",
+    "- 确保不同故事类型格式的准确性和合适的文本内容量(字数)\n",
+    "- 处理不同风格故事的语言特点\n",
+    "### 未来改进方向\n",
+    "- 扩展故事元素库,增加更多角色、地点和情节\n",
+    "- 支持用户自定义故事元素\n",
+    "- 添加故事优化功能,如语法检查和风格统一\n",
+    "- 实现多语言故事生成支持\n",
+    "- 添加故事可视化功能,如场景图或角色关系图"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "ha",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.10.19"
+  },
+  "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

+ 2 - 0
Co-creation-projects/laoyouf-aistory/requirements.txt

@@ -0,0 +1,2 @@
+# 核心依赖
+hello-agents[all]>=0.2.7