智能体实战(需求分析助手)二、需求分析助手第一版实现(支持需求提取、整理、痛点分析、需求分类、优先级分析、需求文档生成等功能)

基于提供的调用 qwen-plus 大模型的实战代码,我将对需求分析助手的第一迭代功能目标进行实现设计。以下是基于该示例代码的第一迭代功能实现细化方案:


功能 1:用户与需求分析助手交互界面(文本交互)

实现步骤:
  1. 界面设计:设计一个简洁的文本交互界面,可以使用命令行界面 (CLI) 的交互方式(。
  2. 接收用户输入:实现功能用于接收用户需求的文本描述。
  3. 反馈显示:将大模型生成的反馈(如分析结果和分类)显示给用户。

功能 2:需求获取与提问模板

实现步骤:
  1. 需求模板设计:创建一个标准模板,包含:
    • 需求目标
    • 痛点
    • 解决方案
    • 案例参考
    • 紧急程度
  2. 动态提问:根据模板,逐步引导用户填写各项关键信息。
  3. 输入验证:确保用户填写的信息完整,并进行初步格式校验。

功能 3:需求分类与优先级评估

实现步骤:
  1. 分类模型:在 prompt 中添加需求分类逻辑:功能需求、非功能需求等。
  2. 优先级评估:基于紧急程度字段,实现初步算法;例如:
    • 高:用户输入“必须马上完成”
    • 中:用户输入“计划两周内完成”
    • 低:用户输入“长期目标”。

功能 4:输出初步需求列表

实现步骤:
  1. 需求输出格式:结构化展示整理的需求列表,包括分类和优先级。
  2. 导出功能:支持将需求列表导出为 Markdown 文件。

代码参考

没有环境或者环境不会搭建的同学请参考前面写过的这篇文章:基本开发环境搭建篇

import os
import dashscope

# 设置 Dashscope API 密钥(需要替换为实际值)
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY", "your_api_key_here")

# 使用 qwen-plus 进行需求整理和分类
def analyze_requirements(requirements_text):
    prompt = """
    请分析以下用户需求:
    1. 结合用户需求描述,生成包括业务场景、价值和痛点的内容。
    2. 将每个需求分类为功能需求或非功能需求。
    3. 根据紧急程度(高、中/低)评估每个需求的优先级。
    4. 输出格式为:
       - 原始需求描述:
       - 业务场景:
       - 价值:
       - 痛点:
       - 类型:
       - 优先级:
    """
    messages = [
        {"role": "system", "content": prompt},
        {"role": "user", "content": requirements_text}
    ]
    try:
        response = dashscope.Generation.call(
            api_key=DASHSCOPE_API_KEY,
            model="qwen-plus",
            messages=messages,
            result_format="message"
        )
        content = response.get("output", {}).get("choices", [{}])[0].get("message", {}).get("content")
        return content
    except Exception as e:
        return f"调用模型时出错: {e}"

# 处理用户输入,确保换行符作为文本的一部分
def collect_input(prompt):
    print(prompt)
    lines = []
    print("(按两次回车结束输入)")
    while True:
        line = input()
        if line == "":
            # 检测连续空输入,结束多行输入
            if not lines or lines[-1] == "":
                break
        lines.append(line)
    return " ".join(lines).strip()

# 获取用户需求的函数
def collect_requirements():
    print("\n请按照提示输入您的需求信息:")
    requirements = []
    
    while True:
        print("\n=== 新的需求 ===")
        goal = collect_input("1. 您的目标是什么?")
        pain_point = collect_input("2. 您希望解决哪些痛点?")
        solution = collect_input("3. 描述您的解决方案:")
        examples = collect_input("4. 提供相关的示例或参考(可选):")
        urgency = collect_input("5. 紧急程度如何(高/中/低)?")
        
        requirement = (
            f"目标: {goal}\n"
            f"痛点: {pain_point}\n"
            f"解决方案: {solution}\n"
            f"示例: {examples}\n"
            f"紧急程度: {urgency}\n"
        )
        requirements.append(requirement)
        
        while True:
            more = input("\n是否需要添加另一个需求?(是/否):").strip().lower()
            if more in ["是", "yes", "否", "no"]:
                break
            print("请输入明确的回答:是/否")
        
        if more in ["否", "no"]:
            break
    
    return "\n".join(requirements)

# 保存需求列表到文件
def save_requirements_to_file(content, filename="requirements.md"):
    try:
        with open(filename, "w", encoding="utf-8") as file:
            file.write("# 需求分析报告\n\n")
            file.write(content)
        print(f"\n需求分析报告已保存到 {filename}")
    except Exception as e:
        print(f"\n保存文件时出错: {e}")

# 主函数
def main():
    print("=== 欢迎使用需求分析助手 ===\n")
    
    # Step 1: Collect requirements
    requirements_text = collect_requirements()
    
    while True:
        # Step 2: Analyze requirements using qwen-plus model
        print("\n正在分析需求,请稍候...")
        analysis_result = analyze_requirements(requirements_text)
        print("\n=== 分析结果 ===")
        print(analysis_result)
        
        # Step 3: Ask for confirmation
        confirm = input("\n是否确认需求并生成文件?(是/否):").strip().lower()
        if confirm in ["是", "yes"]:
            save_requirements_to_file(analysis_result)
            break
        elif confirm in ["否", "no"]:
            print("\n请完善您的需求:")
            additional_requirements = collect_requirements()
            requirements_text += "\n" + additional_requirements
        else:
            print("请输入明确的回答:是/否")

if __name__ == "__main__":
    main()


运行效果

1、需求素材案例:

需求描述:
在设计一款智能汽车时,我们的目标是打造一个集成了尖端科技、舒适体验和安全保障的移动空间。这款汽车将配备自动驾驶功能,能够在复杂的交通环境中安全导航,同时减轻驾驶员的疲劳。车内将有一个智能语音助手,能够理解并执行乘客的指令,如调整车内温度、播放音乐、导航至目的地等。此外,车辆将配备先进的传感器和摄像头,以实现360度的环境感知,确保在任何天气和光照条件下都能提供准确的路况信息。车内娱乐系统将支持高清视频流和游戏,让乘客在长途旅行中也能享受娱乐。同时,车辆将具备远程控制功能,允许车主通过智能手机应用监控和控制车辆状态,如预冷或预热车内环境、远程锁定和解锁车门等。为了提高能效,车辆将采用混合动力或纯电动驱动,配备能量回收系统,以减少能源消耗并降低运行成本。

用户痛点:
主要集中在传统汽车的驾驶疲劳、操作复杂性、安全问题以及环境影响上。智能汽车通过自动化和智能化解决了这些问题,提供了更加便捷、安全和环保的出行选择。例如,自动驾驶功能可以减少因人为操作失误导致的交通事故,智能语音助手简化了驾驶过程中的操作,而电动驱动则减少了对环境的污染。

案例:我们可以借鉴特斯拉Model S的成功。特斯拉Model S不仅以其电动动力系统和自动驾驶功能著称,还以其简洁的内饰设计和集成的触摸屏控制中心吸引了消费者。这款车通过软件更新不断引入新功能,如自动驾驶辅助系统Autopilot和Over-the-Air更新,这些都极大地提升了用户体验,并减少了对传统服务站的依赖。通过这样的案例,我们可以看到智能汽车如何通过不断的技术创新和用户友好的设计来满足现代出行的需求。

2、生成需求文档效果:

在这里插入图片描述


总结

基于以上方案,每个功能模块均可以基于 qwen-plus 的大模型实现核心逻辑,同时将输入输出格式化为结构化需求列表。
本篇实现了一个基本的需求收集,需求分析,需求报告生成的“需求分析助手”,此助手已经具备较强的需求分析能力,后续章节将按照迭代计划持续迭代升级打造一个功能完善的需求分析助手!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940896.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。

网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…

malloc 分配大堆块(128KB)的一次探索

前言 一次意外执行了 malloc(0x5000)&#xff0c;结构使用 gdb 调试发现其分配的位置在 TLS 区域&#xff0c;这令我不解&#xff08;&#xff1a;最后去看了下 malloc 源码和 mmap 源码实现&#xff0c;发现似乎可能是 gdb 插件的问题&#xff0c;乐 场景复现 #include <…

大数据机器学习算法和计算机视觉应用07:机器学习

Machine Learning Goal of Machine LearningLinear ClassificationSolutionNumerical output example: linear regressionStochastic Gradient DescentMatrix Acceleration Goal of Machine Learning 机器学习的目标 假设现在有一组数据 x i , y i {x_i,y_i} xi​,yi​&…

【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 引言 图像增强API调用实践1. API选择与参数设置2. 在线调试与结果分析3. 响应结果具体实现代码 发票…

android studio更改应用图片,和应用名字。

更改应用图标&#xff0c;和名字 先打开AndroidManifest.xml文件。 更改图片文件名字&#xff08; 右键-->构建-->重命名&#xff08;R&#xff09;&#xff09;

Git(11)之log显示支持中文

Git(11)之log显示支持中文 Author&#xff1a;Once Day Date&#xff1a;2024年12月21日 漫漫长路有人对你微笑过嘛… 参考文档&#xff1a;GIT使用log命令显示中文乱码_gitlab的log在matlab里显示中文乱码-CSDN博客 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSD…

代理模式(JDK,CGLIB动态代理,AOP切面编程)

代理模式是一种结构型设计模式&#xff0c;它通过一个代理对象作为中间层来控制对目标对象的访问&#xff0c;从而增强或扩展目标对象的功能&#xff0c;同时保持客户端对目标对象的使用方式一致。 代理模式在Java中的应用,例如 1.统一异常处理 2.Mybatis使用代理 3.Spring…

猪猪软件库

猪猪软件库&#xff0c;汇聚各类宝藏软件&#xff0c;宛如一座数字百宝箱。这里涵盖了实用工具、趣味游戏、高效办公软件等丰富资源&#xff0c;满足不同用户的多样需求。界面简洁直观&#xff0c;搜索便捷流畅&#xff0c;能让你迅速定位心仪软件。 所有资源都经过严格筛选&a…

端到端自动驾驶大模型:视觉-语言-动作模型 VLA

模型框架定义、模型快速迭代能力是考查智驾团队出活能力的两个核心指标。在展开讨论Vision-Language-Action Models(VLA)之前&#xff0c;咱们先来讨论端到端自动驾驶大模型设计。 目录 1. 端到端自动驾驶大模型设计 1.1 模型输入设计 1.2 模型输出设计 1.3 实现难点分析 …

Swin transformer 论文阅读记录 代码分析

该篇文章&#xff0c;是我解析 Swin transformer 论文原理&#xff08;结合pytorch版本代码&#xff09;所记&#xff0c;图片来源于源paper或其他相应博客。 代码也非原始代码&#xff0c;而是从代码里摘出来的片段&#xff0c;配上简单数据&#xff0c;以便理解。 当然&…

LLMs之rStar:《Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers》翻译与解读

LLMs之rStar&#xff1a;《Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers》翻译与解读 导读&#xff1a;这篇论文提出了一种名为rStar的自我博弈互推理方法&#xff0c;用于增强小型语言模型 (SLMs) 的推理能力&#xff0c;无需微调或依赖更强大的模型。rStar…

CS 144 check5: down the stack (the network interface)

Lectures Note 略 Exercises TCP片段传输到对等方的过程&#xff1a; TCP-in-UDP-in-IP. Linux 提供了一种接口&#xff08;即“数据报套接字”&#xff0c;UDPSocket&#xff09;&#xff0c;它允许应用程序仅提供用户数据报的有效载荷和目标地址&#xff0c;而内核则负责…

Llama 3 模型系列解析(一)

目录 1. 引言 1.1 Llama 3 的简介 1.2 性能评估 1.3 开源计划 1.4 多模态扩展 ps 1. 缩放法则 2. 超额训练&#xff08;Over-training&#xff09; 3. 计算训练预算 4. 如何逐步估算和确定最优模型&#xff1f; 2. 概述 2.1 Llama 3 语言模型开发两个主要阶段 2.2…

越疆科技营收增速放缓:毛利率未恢复,持续亏损下销售费用偏高

《港湾商业观察》施子夫 12月13日&#xff0c;深圳市越疆科技股份有限公司&#xff08;以下简称&#xff0c;越疆科技&#xff0c;02432.HK&#xff09;发布全球发售公告&#xff0c;公司计划全球发售4000万股股份&#xff0c;其中3800万股国际发售&#xff0c;200万股香港公开…

微信小程序实现画板画布自由绘制、选择画笔粗细及颜色、记录撤回、画板板擦、清空、写字板、导出绘图、canvas,开箱即用

目录 画板创建canvas绘制及渲染画笔粗细功能实现画笔颜色选择画笔痕迹撤回、板擦、画布清空canvas解析微信小程序中 canvas 的应用场景canvas 与 2D 上下文、webgl 上下文的关系图像的加载与绘制说明代码说明画板创建 canvas绘制及渲染 在wxml添加对应的canvas标签代码,并在j…

混合精度训练说明

什么是混合精度训练&#xff1f;混合精度训练有什么用&#xff1f; 这里总结一下。 本文总结自kapathy的build gpt2 通常在训练过程中&#xff0c;model里面的数据默认都是torch.float32类型&#xff0c; 也就是用32bit的float型数据表示变量。 比如特征提取中提取的特征&…

draw.io 导出svg图片插入word后模糊(不清晰 )的解决办法

通常我们将图片从draw.io导出为svg格式后插入word, 会发现字体不清晰&#xff0c;特别是使用宋体时&#xff0c;折腾了半天&#xff0c;得到如下办法&#xff1a; 方法1: 在draw.io中导出pdf文件&#xff0c;使用 PDF转SVG转换器 - SVGConverter 将其转换为svg, 完美呈现。 …

ARM学习(38)多进程多线程之间的通信方式

ARM学习(38)ARM学习(38)多进程多线程之间的通信方式 一、问题背景 笔者在调试模拟器的时候,碰到进程间通信的问题,一个进程在等另外一个进程ready的时候,迟迟等不到,然后通过调试发现,另外一个进程变量已经变化了,但是当前进程变量没变化,需要了解进程间通信的方式…

【动手学运动规划】 5.2 数值优化基础:梯度下降法,牛顿法

朕四季常服, 不过八套. — 大明王朝1566 道长 &#x1f3f0;代码及环境配置&#xff1a;请参考 环境配置和代码运行! 上一节我们介绍了数值优化的基本概念, 让大家对最优化问题有了基本的理解. 那么对于一个具体的问题, 我们应该如何求解呢? 这一节我们将介绍几个基本的求解…

24-12-22 pytorch学习 基础知识 帝乡明日到,犹自梦渔樵。

文章目录 pytorch学习 基础知识pytorch学习(1) Tensors1.1 初始化Tensor1.2 Tensor 的属性1.3 Tensors 的操作1.4 与 NumPy 的桥梁1.4.1 Tensor 到 NumPy 数组1.4.2 NumPy 数组 到 Tensor pytorch学习(2) 数据集和数据加载器2.1 加载一个数据集2.2 迭代和可视化数据集2.3 为你的…