# lab04 **Repository Path**: ye-puxu/lab04 ## Basic Information - **Project Name**: lab04 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-22 - **Last Updated**: 2025-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实验四:智能模型驱动实验报告 ## 1. 实验目标 1. 了解智能模型驱动相关概念 2. 掌握基于大语言模型辅助的建模方法 3. 基于相关框架构建MultiAgent Workflow实现自动化需求建模 ## 2. 实验内容 ### 任务一:基于纯Restful API的智能化需求建模(使用Postman) #### 实现步骤 1. **设置请求参数**: - URL:`https://api.chatfire.cn/v1/chat/completions` - Headers: - `Content-Type: application/json` - `Authorization: xxxxxx` - Body: ```json { "model": "gpt-4o", "messages": [ { "role": "system", "content": "你是一个软件建模专家,请根据需求生成JSON格式的需求模型,包含:系统名称(system_name)、用例图(usecase_diagram)、类图(class_diagram)。用例图包含actors和usecases,类图包含classes。所有名称使用英文PascalCase。" }, { "role": "user", "content": "开发一个外卖系统,功能包括:用户浏览餐厅、下单、支付、商家处理订单、骑手配送。用户分为普通用户、商家、骑手三种角色。" } ], "temperature": 0.3 } ``` 2. **发送请求并获取响应**: - 在Postman中发送POST请求 - 从响应体中提取生成的模型JSON 3. **结果示例**: ```json { "id": "chatcmpl-BoEdGLe1gsQcnVdOGoFYcIgTChMYt", "object": "chat.completion", "created": 1751312346, "model": "gpt-4o-2024-08-06", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "```json\n{\n \"system_name\": \"FoodDeliverySystem\",\n \"usecase_diagram\": {\n \"actors\": [\n \"RegularUser\",\n \"Merchant\",\n \"Rider\"\n ],\n \"usecases\": [\n {\n \"name\": \"BrowseRestaurants\",\n \"actors\": [\"RegularUser\"]\n },\n {\n \"name\": \"PlaceOrder\",\n \"actors\": [\"RegularUser\"]\n },\n {\n \"name\": \"MakePayment\",\n \"actors\": [\"RegularUser\"]\n },\n {\n \"name\": \"ProcessOrder\",\n \"actors\": [\"Merchant\"]\n },\n {\n \"name\": \"DeliverOrder\",\n \"actors\": [\"Rider\"]\n }\n ]\n },\n \"class_diagram\": {\n \"classes\": [\n {\n \"name\": \"User\",\n \"attributes\": [\n \"UserID\",\n \"UserName\",\n \"UserType\"\n ],\n \"methods\": [\n \"Login\",\n \"Register\"\n ]\n },\n {\n \"name\": \"Restaurant\",\n \"attributes\": [\n \"RestaurantID\",\n \"RestaurantName\",\n \"Menu\"\n ],\n \"methods\": [\n \"DisplayMenu\",\n \"UpdateDetails\"\n ]\n },\n {\n \"name\": \"Order\",\n \"attributes\": [\n \"OrderID\",\n \"OrderDetails\",\n \"OrderStatus\"\n ],\n \"methods\": [\n \"CreateOrder\",\n \"UpdateOrderStatus\"\n ]\n },\n {\n \"name\": \"Payment\",\n \"attributes\": [\n \"PaymentID\",\n \"PaymentAmount\",\n \"PaymentMethod\"\n ],\n \"methods\": [\n \"ProcessPayment\"\n ]\n },\n {\n \"name\": \"Delivery\",\n \"attributes\": [\n \"DeliveryID\",\n \"DeliveryAddress\",\n \"DeliveryTime\"\n ],\n \"methods\": [\n \"AssignRider\",\n \"TrackDelivery\"\n ]\n },\n {\n \"name\": \"Merchant\",\n \"attributes\": [\n \"MerchantID\",\n \"MerchantName\",\n \"ShopDetails\"\n ],\n \"methods\": [\n \"ManageOrder\",\n \"UpdateMenu\"\n ]\n },\n {\n \"name\": \"Rider\",\n \"attributes\": [\n \"RiderID\",\n \"RiderName\",\n \"VehicleDetails\"\n ],\n \"methods\": [\n \"PickOrder\",\n \"ConfirmDelivery\"\n ]\n }\n ]\n }\n}\n```", "refusal": null, "annotations": [] }, "logprobs": null, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 114, "completion_tokens": 518, "total_tokens": 632, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { "reasoning_tokens": 0, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "system_fingerprint": "fp_ee1d74bde0" } ``` **截图**: ![image-20250701034009664](readme.assets/image-20250701034009664.png) ------ ### 任务二:基于OpenAI SDK的智能化需求建模 **代码文件**:`task2_sdk_modeling.py` #### 核心代码 ``` import json from openai import OpenAI # 配置信息 BASE_URL = "https://api.chatfire.cn/v1" API_KEY = "sk-MQ2LjRIG6EOXcOORCdadbQZ3VDlZLCftkl64StkxKGXfmx7e" # 初始化客户端 client = OpenAI(base_url=BASE_URL, api_key=API_KEY) # 需求描述 requirements = """ 开发一个外卖系统,功能包括: 1. 用户浏览餐厅 2. 用户下单 3. 用户支付 4. 商家处理订单 5. 骑手配送 用户角色:普通用户、商家、骑手 """ # 系统提示 system_prompt = """ 你是一个软件建模专家,请根据需求生成JSON格式的需求模型... """ # 调用API response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": requirements} ], response_format={"type": "json_object"} ) # 处理输出 model_json = json.loads(response.choices[0].message.content) print(json.dumps(model_json, indent=2)) # 保存结果 with open("sdk_generated_model.json", "w") as f: json.dump(model_json, f, indent=2, ensure_ascii=False) ``` #### 输出格式 ``` { "system_name": "TakeoutSystem", "usecase_diagram": { "actors": ["Customer", "RestaurantOwner"], "usecases": [ {"name": "PlaceOrder", "actors": ["Customer"]} ] }, "class_diagram": { "classes": [ { "name": "Order", "attributes": [{"name": "status", "type": "OrderStatus[PLACED|DELIVERED]"}], "methods": [{"name": "calculateTotal", "parameters": []}] } ] } } ``` ------ ### 任务三:基于LLM Agent的智能化需求建模 **代码文件**:`task3_multiagent_modeling.py` #### MultiAgent Workflow设计 #### Agent分工 | Agent名称 | 职责 | 输出格式 | | :--------------------- | :------------- | :----------------------------------------- | | Requirement_Analyzer | 需求结构化分析 | `{"system_name": "...", "actors": [...]}` | | UseCase_Generator | 生成用例图 | `{"usecases": [{"name": "...", ...}]}` | | ClassDiagram_Generator | 生成类图 | `{"classes": [{"name": "...", ...}]}` | | Contract_Generator | 生成OCL契约 | `[{"context": "...", "type": "pre/post"}]` | #### 输出格式定义(DSL) ``` { "system_name": "系统名称", "usecase_diagram": { "name": "系统名称", "usecases": [ { "name": "用例名(PascalCase)", "actors": ["角色名"], "include": [], "extend": [] } ] }, "class_diagram": { "classes": [ { "name": "类名", "attributes": [{"name": "属性名", "type": "类型"}], "methods": [{"name": "方法名", "parameters": []}] } ] }, "contracts": [ { "context": "类名::方法名()", "type": "pre/post/inv", "condition": "OCL表达式" } ] } ``` #### 运行结果 ```python 🚀 开始智能建模工作流... ✅ 需求分析完成: TakeoutSys ✅ 用例图生成: 5个用例 ✅ 类图生成: 8个类 ✅ 契约生成: 12个契约 💾 模型已保存到: models/TakeoutSys_model.json 🎉 建模完成!生成模型摘要: 系统名称: TakeoutSys 用例数量: 5 类数量: 8 契约数量: 12 ``` **截图**: ![image-20250701042200142](readme.assets/image-20250701042200142.png)