Skip to main content
  1. Posts/

实验设计方案

·1476 words·7 mins

实验设计方案 #

用于论文第5章"系统测试与实验分析"

包含详细的实验设计、数据收集方案、分析方法


实验概览 #

实验目标 #

  1. ✅ 验证系统功能完整性和稳定性
  2. ✅ 评估评论生成质量
  3. ✅ 验证多智能体评估的有效性(核心)
  4. ✅ 分析不同Prompt策略的效果

实验清单 #

实验ID 实验名称 目的 优先级 预计时间
EXP-01 功能测试 验证所有功能正常 1天
EXP-02 性能测试 测试响应时间 0.5天
EXP-03 Prompt策略对比 评估生成质量 2天
EXP-04 风格对比实验 对比5种风格 1天
EXP-05 多Agent评估有效性 核心实验 3天
EXP-06 Agent特征分析 分析Agent差异 1天

实验1:功能测试(EXP-01) #

1.1 测试用例设计 #

测试用例表格(论文中直接使用):

测试ID 模块 功能点 测试步骤 输入 预期输出 备注
TC001 帖子管理 创建帖子 1. 填写表单2. 提交 标题=“测试”内容=“内容”分类=“科技产品” 返回201状态码返回帖子ID 必须测试
TC002 帖子管理 查询列表 1. 发送GET请求 page=1, limit=10 返回10条帖子数组
TC003 帖子管理 查询详情 1. 发送GET请求 post_id=1 返回帖子详情+评论列表
TC004 帖子管理 删除帖子 1. 发送DELETE请求 post_id=1 返回204状态码
TC005 帖子管理 创建失败-缺少字段 1. 提交不完整表单 只有title 返回422错误 边界测试
TC006 帖子管理 查询不存在ID 1. 查询不存在的ID post_id=999 返回404错误 边界测试
TC007 评论生成 生成单条 1. 调用generate接口 post_id=1styles=[“幽默型”] 返回1条评论
TC008 评论生成 批量生成 1. 调用generate接口 post_id=1styles=[“幽默型”,“理性型”]count_per_style=2 返回4条评论
TC009 评论生成 生成失败-无效风格 1. 传入错误风格 styles=[“不存在的风格”] 返回400错误 边界测试
TC010 Agent评估 单Agent评估 1. 调用evaluate接口 comment_id=1agents=[“资深爱好者”] 返回1份评估结果
TC011 Agent评估 多Agent评估 1. 调用evaluate接口 comment_id=1agents=全部8个 返回8份评估结果
TC012 Agent评估 获取分析报告 1. 调用analysis接口 comment_id=1 返回平均分、行为分布、争议指数
TC013 前端页面 帖子列表显示 1. 访问/posts - 显示帖子表格,有数据
TC014 前端页面 创建帖子表单 1. 点击新建按钮2. 填写表单3. 提交 完整表单数据 创建成功,列表刷新
TC015 前端页面 评论生成界面 1. 点击"生成评论"2. 选择风格3. 点击生成 选择3种风格 显示生成进度,完成后显示评论列表
TC016 前端页面 评估结果可视化 1. 点击"评估"2. 等待完成3. 查看结果 - 显示雷达图、柱状图、统计数据

1.2 测试执行计划 #

时间: 3月20日-3月21日

环境: 本地开发环境

执行步骤:

  1. 准备测试数据(10个帖子)
  2. 按表格逐项测试
  3. 记录实际输出
  4. 标记通过/失败
  5. 对失败用例进行修复
  6. 回归测试

1.3 测试报告模板 #

功能测试报告

测试时间:2026年3月21日
测试人员:[你的姓名]
测试环境:macOS 14.0, Python 3.12, FastAPI 0.104

测试结果概览:
- 总用例数:16
- 通过数:16
- 失败数:0
- 通过率:100%

详细结果:见表5-3(论文中)

结论:所有核心功能测试通过,系统运行稳定。

实验2:性能测试(EXP-02) #

2.1 响应时间测试 #

测试工具: Python脚本 + time模块

测试代码:

# tests/performance_test.py
import time
import requests

BASE_URL = "http://localhost:8000"

def test_response_time(operation_name, url, method="GET", data=None, count=50):
    """测试响应时间"""
    times = []
    
    for i in range(count):
        start = time.time()
        if method == "GET":
            response = requests.get(url)
        elif method == "POST":
            response = requests.post(url, json=data)
        end = time.time()
        
        if response.status_code in [200, 201]:
            times.append(end - start)
    
    return {
        "operation": operation_name,
        "count": len(times),
        "avg": sum(times) / len(times),
        "min": min(times),
        "max": max(times)
    }

# 执行测试
results = []

# 1. 创建帖子
result = test_response_time(
    "创建帖子",
    f"{BASE_URL}/api/posts",
    method="POST",
    data={"title": "测试", "content": "测试内容", "category": "科技产品"}
)
results.append(result)

# 2. 查询列表
result = test_response_time(
    "查询帖子列表",
    f"{BASE_URL}/api/posts?page=1&limit=10"
)
results.append(result)

# 3. 生成评论(注意:这个会调用LLM,时间较长)
result = test_response_time(
    "生成单条评论",
    f"{BASE_URL}/api/comments/generate",
    method="POST",
    data={"post_id": 1, "styles": ["幽默型"], "count_per_style": 1},
    count=30  # 减少次数,因为很慢
)
results.append(result)

# 4. Agent评估
result = test_response_time(
    "8个Agent评估",
    f"{BASE_URL}/api/evaluations/evaluate",
    method="POST",
    data={"comment_id": 1},
    count=20  # 减少次数
)
results.append(result)

# 输出结果(论文表格格式)
print("| 操作 | 平均响应时间 | 最小值 | 最大值 | 样本数 |")
print("|------|------------|--------|--------|--------|")
for r in results:
    print(f"| {r['operation']} | {r['avg']:.2f}s | {r['min']:.2f}s | {r['max']:.2f}s | {r['count']} |")

执行命令:

cd backend
poetry run python -m tests.performance_test

输出示例:

| 操作 | 平均响应时间 | 最小值 | 最大值 | 样本数 |
|------|------------|--------|--------|--------|
| 创建帖子 | 0.15s | 0.12s | 0.22s | 50 |
| 查询帖子列表 | 0.08s | 0.05s | 0.15s | 50 |
| 生成单条评论 | 5.30s | 3.80s | 8.20s | 30 |
| 8个Agent评估 | 42.50s | 35.10s | 58.70s | 20 |

论文中的分析:

  • 数据库操作很快(<0.2s)
  • LLM调用是主要瓶颈(5-50s)
  • 优化方向:异步并发

2.2 并发测试(可选) #

如果想做并发测试,可以用Locust:

# locustfile.py
from locust import HttpUser, task, between

class WebsiteUser(HttpUser):
    wait_time = between(1, 3)
    
    @task(3)
    def list_posts(self):
        self.client.get("/api/posts")
    
    @task(1)
    def create_post(self):
        self.client.post("/api/posts", json={
            "title": "Test",
            "content": "Test content",
            "category": "科技产品"
        })

执行:

locust -f locustfile.py --host=http://localhost:8000

实验3:Prompt策略对比(EXP-03)⭐⭐⭐ #

3.1 实验目的 #

验证不同Prompt设计策略对评论生成质量的影响。

3.2 实验设计 #

自变量: Prompt策略

  • 策略A:基础Prompt(无Few-shot示例)
  • 策略B:基础Prompt + 2个Few-shot示例
  • 策略C:详细Prompt + 2个Few-shot示例

因变量: 生成质量评分(1-5分)

控制变量:

  • 使用相同的5个测试帖子
  • 使用相同的LLM(GPT-3.5-turbo)
  • 使用相同的temperature(0.7)
  • 使用相同的风格(理性型)

样本量: 每个策略生成5条评论,共15条评论

3.3 测试帖子选择 #

帖子ID 标题 分类 字数
1 新款手机发布 科技产品 200
2 加班文化讨论 争议话题 250
3 旅游分享 生活分享 180
4 电影评论 娱乐八卦 220
5 教育政策 时事热点 240

3.4 Prompt模板 #

策略A(基础):

你是一个理性客观的社交媒体用户。

请对以下帖子生成一条理性分析型评论:
【帖子内容】{content}

要求:
1. 150字左右
2. 逻辑清晰
3. 有理有据

只输出评论内容。

策略B(+Few-shot):

你是一个理性客观的社交媒体用户。

【参考示例】
帖子:觉得现在年轻人都不爱读书了
评论:这个观点可能需要更多数据支持。根据《2023年国民阅读报告》...

请对以下帖子生成一条理性分析型评论:
【帖子内容】{content}

要求:
1. 150字左右
2. 逻辑清晰
3. 有理有据

只输出评论内容。

策略C(详细+Few-shot):

你是一个理性客观的社交媒体用户,擅长分析和思考。
你关注:
1. 内容是否准确、专业
2. 逻辑是否严密
3. 是否有深度见解

【参考示例】
帖子:觉得现在年轻人都不爱读书了
评论:这个观点可能需要更多数据支持。根据《2023年国民阅读报告》...

请对以下帖子生成一条理性分析型评论:
【帖子内容】{content}
【主题】{topic}
【情感倾向】{sentiment}

要求:
1. 150字左右
2. 逻辑清晰,有理有据
3. 可以提出不同观点
4. 适当提出问题引发思考

只输出评论内容。

3.5 评分方式 #

邀请10位评分者(可以是同学或朋友)对15条评论进行盲测评分。

评分维度:

  1. 内容相关性(1-5分)
  2. 逻辑严密性(1-5分)
  3. 表达流畅性(1-5分)
  4. 整体质量(1-5分)

评分界面设计:

## 评论评分问卷

### 说明
请对以下评论进行评分,不要知道评论是用哪种策略生成的(盲测)。

### 原帖
标题:新款手机发布
内容:今天某品牌发布了新款手机...

### 评论1
[评论内容]

请评分:
- 内容相关性:⭐⭐⭐⭐⭐ (1-5)
- 逻辑严密性:⭐⭐⭐⭐⭐ (1-5)
- 表达流畅性:⭐⭐⭐⭐⭐ (1-5)
- 整体质量:⭐⭐⭐⭐⭐ (1-5)

问卷工具: 可以用问卷星、腾讯问卷等

3.6 数据收集表格 #

评论ID 策略 帖子ID 评分者1 评分者2 评分者10 平均分
1 A 1 3.5 3.0 3.2 3.2
2 A 2 3.1 2.9 3.0 3.0
15 C 5 4.5 4.2 4.3 4.3

3.7 数据分析 #

使用Python进行统计分析:

import pandas as pd
import scipy.stats as stats

# 加载数据
data = pd.read_csv("prompt_experiment_results.csv")

# 按策略分组,计算平均分
strategy_scores = data.groupby('strategy')['avg_score'].agg(['mean', 'std'])

print(strategy_scores)

# 方差分析(ANOVA)
策略A_scores = data[data['strategy'] == 'A']['avg_score']
策略B_scores = data[data['strategy'] == 'B']['avg_score']
策略C_scores = data[data['strategy'] == 'C']['avg_score']

f_stat, p_value = stats.f_oneway(策略A_scores, 策略B_scores, 策略C_scores)

print(f"F统计量: {f_stat:.2f}")
print(f"p值: {p_value:.4f}")

if p_value < 0.05:
    print("结论:不同策略之间存在显著差异(p < 0.05)")

论文中的表格:

策略 平均分 标准差 最高分 最低分
策略A(无Few-shot) 3.2 0.8 4.5 2.1
策略B(+Few-shot) 3.8 0.6 4.7 2.8
策略C(详细+Few-shot) 4.1 0.5 4.8 3.2

统计检验结果:

  • F统计量 = 12.34
  • p值 = 0.0003 < 0.05
  • 结论:三种策略之间存在显著差异

实验4:风格对比(EXP-04) #

4.1 实验设计 #

选择5个帖子,每个帖子生成5种风格的评论(幽默型、理性型、情感共鸣型、争议型、支持型),共25条评论。

邀请20位用户评分。

4.2 预期结果 #

风格 平均分 受欢迎度排名 适用场景
幽默型 4.3 1 娱乐、生活类
理性型 4.0 2 争议、时事类
情感共鸣型 3.9 3 情感、生活类
支持型 3.7 4 正面内容
争议型 3.5 5 争议话题

实验5:多Agent评估有效性验证(EXP-05)⭐⭐⭐⭐⭐ #

这是论文最核心的实验!

5.1 实验假设 #

H1: 多Agent评估结果与真实用户评估结果存在正相关关系。

H2: 相关系数 r > 0.7,达到强相关水平。

5.2 实验设计 #

5.2.1 样本选择 #

选择10个测试帖子:

  • 每个分类2个帖子
  • 涵盖不同主题和情感倾向

为每个帖子生成5条评论:

  • 5种不同风格各1条
  • 共10 × 5 = 50条评论

5.2.2 Agent评估 #

对50条评论,使用8个Agent进行评估,每个Agent给出:

  • 4个维度评分(1-5分)
  • 综合评分
  • 态度(like/neutral/dislike)
  • 反馈评语

数据收集:

  • 保存到数据库
  • 导出为CSV:agent_evaluations.csv

5.2.3 真实用户评估 #

招募20位真实用户:

用户要求:

  • 年龄20-35岁
  • 经常使用社交媒体(每天使用)
  • 愿意花30分钟完成评估

评估方式: 设计在线问卷,让用户按照相同的评分标准(4个维度+综合评分)评价50条评论。

问卷结构:

# 社交媒体评论质量评估问卷

## 说明
您好!这是一项学术研究,旨在评估社交媒体评论的质量。
请根据您的真实感受为每条评论评分。

## 评分标准
1. 内容相关性:评论与帖子的相关程度(1-5分,5分最高)
2. 情感共鸣:是否能引起您的情感共鸣(1-5分)
3. 讨论价值:是否能引发有意义的讨论(1-5分)
4. 表达质量:语言是否流畅、准确(1-5分)

---

### 第1组

**原帖:**
标题:新款iPhone发布
内容:今天苹果发布了新款iPhone...(完整内容)
分类:科技产品

**评论1:**
"又是挤牙膏升级,建议等等党永远等😂 不过认真说,影像系统确实有提升,就是价格劝退。"

**请评分:**
- 内容相关性:1 2 3 4 5
- 情感共鸣:1 2 3 4 5
- 讨论价值:1 2 3 4 5
- 表达质量:1 2 3 4 5

---

(重复50次)

问卷发布:

  • 使用问卷星/腾讯问卷
  • 分享给20位志愿者
  • 预计每人30分钟完成

数据收集:

  • 导出为CSV:user_evaluations.csv

5.3 数据处理 #

5.3.1 Agent评估数据汇总 #

import pandas as pd

# 读取Agent评估数据
agent_data = pd.read_csv("agent_evaluations.csv")

# 按评论ID分组,计算每条评论的平均分
agent_avg = agent_data.groupby('comment_id').agg({
    'relevance_score': 'mean',
    'emotional_score': 'mean',
    'discussion_score': 'mean',
    'quality_score': 'mean',
    'overall_score': 'mean'
}).reset_index()

agent_avg.to_csv("agent_avg_scores.csv", index=False)

5.3.2 用户评估数据汇总 #

# 读取用户评估数据
user_data = pd.read_csv("user_evaluations.csv")

# 按评论ID分组,计算每条评论的平均分
user_avg = user_data.groupby('comment_id').agg({
    'relevance_score': 'mean',
    'emotional_score': 'mean',
    'discussion_score': 'mean',
    'quality_score': 'mean'
}).reset_index()

# 计算综合评分
user_avg['overall_score'] = user_avg[['relevance_score', 'emotional_score', 
                                       'discussion_score', 'quality_score']].mean(axis=1)

user_avg.to_csv("user_avg_scores.csv", index=False)

5.4 相关性分析 #

import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# 读取数据
agent_avg = pd.read_csv("agent_avg_scores.csv")
user_avg = pd.read_csv("user_avg_scores.csv")

# 合并数据
merged = pd.merge(agent_avg, user_avg, on='comment_id', suffixes=('_agent', '_user'))

# 计算相关系数
correlations = {}
for dimension in ['relevance', 'emotional', 'discussion', 'quality', 'overall']:
    agent_col = f'{dimension}_score_agent'
    user_col = f'{dimension}_score_user'
    
    r, p = stats.pearsonr(merged[agent_col], merged[user_col])
    correlations[dimension] = {'r': r, 'p': p}
    
    print(f"{dimension}: r = {r:.3f}, p = {p:.4f}")

# 输出论文表格
print("\n论文表格(表5-8):")
print("| 维度 | Pearson相关系数 | p值 | 显著性 |")
print("|------|----------------|------|--------|")
for dim, stats in correlations.items():
    sig = "***" if stats['p'] < 0.001 else ("**" if stats['p'] < 0.01 else "*")
    print(f"| {dim} | {stats['r']:.2f} | {stats['p']:.4f} | {sig} |")

# 绘制散点图(综合评分)
plt.figure(figsize=(8, 6))
plt.scatter(merged['overall_score_agent'], merged['overall_score_user'], alpha=0.6)
plt.xlabel('Agent平均评分')
plt.ylabel('用户平均评分')
plt.title('Agent评分 vs 用户评分')

# 拟合线
z = np.polyfit(merged['overall_score_agent'], merged['overall_score_user'], 1)
p = np.poly1d(z)
plt.plot(merged['overall_score_agent'], p(merged['overall_score_agent']), "r--")

plt.savefig('agent_vs_user_scatter.png', dpi=300)
plt.show()

5.5 预期结果 #

表5-8:各维度相关系数

维度 Pearson相关系数 p值 显著性
内容相关性 0.78 <0.001 ***
情感共鸣 0.71 <0.001 ***
讨论价值 0.74 <0.001 ***
表达质量 0.81 <0.001 ***
综合评分 0.72 <0.001 ***

结论:

  • 所有维度的相关系数均 > 0.7,达到强相关水平
  • p值均 < 0.001,具有高度统计显著性
  • 假设H1和H2得到验证

5.6 案例选择(论文第5章用) #

从50条评论中选择3个典型案例:

  1. 高分评论:Agent和用户都给高分
  2. 低分评论:Agent和用户都给低分
  3. 争议评论:Agent评分分歧大,用户评分也分歧大

每个案例详细展示:

  • 原帖内容
  • 评论内容
  • 8个Agent的评分和评语
  • 用户平均评分
  • 分析一致性原因

实验6:Agent特征分析(EXP-06) #

6.1 实验目的 #

分析8个Agent的评分特征和差异性。

6.2 数据分析 #

使用实验5的数据,按Agent分组统计:

# 按Agent分组
agent_stats = agent_data.groupby('agent_persona').agg({
    'overall_score': ['mean', 'std'],
    'action': lambda x: (x == 'like').sum() / len(x)  # 点赞率
}).reset_index()

print("表5-9:各Agent的平均评分和严格度")

6.3 可视化 #

箱线图:

import seaborn as sns

plt.figure(figsize=(12, 6))
sns.boxplot(data=agent_data, x='agent_persona', y='overall_score')
plt.xticks(rotation=45)
plt.title('各Agent评分分布')
plt.savefig('agent_boxplot.png', dpi=300)

点赞率柱状图:

plt.figure(figsize=(10, 6))
plt.bar(agent_stats['agent_persona'], agent_stats['like_rate'])
plt.xlabel('Agent')
plt.ylabel('点赞率')
plt.title('各Agent点赞率对比')
plt.xticks(rotation=45)
plt.savefig('agent_like_rate.png', dpi=300)

数据收集清单(重要!) #

开发过程中要持续收集的材料 #

1. 截图(按时间顺序保存) #

文件夹结构:

screenshots/
├── 01_系统架构/
│   └── architecture_diagram.png
├── 02_数据库设计/
│   ├── er_diagram.png
│   └── table_structure.png
├── 03_开发过程/
│   ├── code_structure.png
│   ├── api_docs.png
│   └── ...
├── 04_界面截图/
│   ├── post_list.png
│   ├── comment_generation.png
│   ├── evaluation_result.png
│   └── ...
├── 05_实验结果/
│   ├── performance_test.png
│   ├── agent_vs_user_scatter.png
│   ├── agent_boxplot.png
│   └── ...

截图要求:

  • 清晰度:1920×1080以上
  • 格式:PNG
  • 命名规范:功能_日期.png

2. 测试数据 #

data/
├── test_posts.csv          # 30个测试帖子
├── generated_comments.csv  # 生成的评论
├── agent_evaluations.csv   # Agent评估结果
├── user_evaluations.csv    # 用户评估结果
├── agent_avg_scores.csv    # Agent平均分
├── user_avg_scores.csv     # 用户平均分
└── correlation_analysis.csv # 相关性分析结果

3. 代码片段 #

保存关键函数的代码(用于论文第4章):

code_snippets/
├── llm_client.py
├── comment_generator.py
├── agent_evaluator.py
├── prompt_templates.py
└── ...

4. 实验日志 #

logs/
├── experiment_log.md        # 每次实验的详细记录
├── bug_fix_log.md          # Bug修复记录
└── development_notes.md    # 开发笔记

实验日志模板:

# 实验日志

## 实验5:多Agent评估有效性验证

**日期:** 2026年4月3日
**实验人员:** [你的姓名]

### 实验准备
- [x] 准备10个测试帖子
- [x] 生成50条评论
- [x] Agent评估完成
- [x] 用户问卷发布

### 实验执行
- 14:00 开始Agent评估,预计耗时30分钟
- 14:35 Agent评估完成,保存数据
- 15:00 用户问卷发布,分享给20位志愿者
- 次日10:00 收集到20份有效问卷

### 数据分析
- 运行correlation_analysis.py
- 生成散点图和相关系数表

### 结果
- 综合评分相关系数:0.72
- p值:<0.001
- 结论假设验证通过!✅

### 问题记录
- 问题1某个Agent返回格式错误已修复
- 问题2:...

### 下一步
- 撰写论文第5.6节
- 准备答辩PPT

时间安排 #

日期 实验 预计耗时 状态
3月20-21日 EXP-01 功能测试 1天
3月21日下午 EXP-02 性能测试 0.5天
3月22-23日 EXP-03 Prompt对比 2天
3月24日 EXP-04 风格对比 1天
3月25-27日 EXP-05 有效性验证 3天
3月28日 EXP-06 Agent分析 1天
3月29-30日 数据整理、图表制作 2天

论文图表清单(至少30张) #

第3章(5张) #

  • 图3-1:系统架构图
  • 图3-2:核心模块交互流程图
  • 图3-3:数据库ER图
  • 表3-1:功能性需求表
  • 表3-2:数据表设计(posts表)

第4章(10张) #

  • 图4-1:Prompt模板结构图
  • 表4-1:Agent人设设计表(重要!)
  • 图4-2:评论生成流程图
  • 图4-3:多Agent评估流程图
  • 代码4-1:LLM客户端代码
  • 代码4-2:评论生成代码
  • 代码4-3:Agent评估代码
  • 图4-4:前端页面截图(3-4张)
  • 图4-5:评估结果可视化截图

第5章(15张以上,最多) #

  • 表5-1:测试环境配置
  • 表5-2:测试数据集构成
  • 表5-3:功能测试用例及结果
  • 表5-4:系统响应时间测试结果
  • 表5-5:不同Prompt策略对比
  • 表5-6:5种风格评论对比
  • 表5-7:Agent vs 用户评分对比
  • 表5-8:各维度相关系数(重要!)
  • 图5-1:Agent评分 vs 用户评分散点图(重要!)
  • 表5-9:各Agent平均评分和严格度
  • 图5-2:各Agent评分分布箱线图
  • 表5-10:不同类型评论的争议指数
  • 图5-3:点赞率柱状图
  • 图5-4:评估结果雷达图
  • 案例展示(3个)

加油!实验是论文的核心,数据要真实、分析要深入! 📊