execute_and_output.py•10.6 kB
#!/usr/bin/env python3
import re
# 模拟微信文章内容
MOCK_ARTICLES = {
"https://mp.weixin.qq.com/s/2023tech001": {
"title": "2023年科技趋势分析",
"author": "科技前沿",
"publish_time": "2023-01-15",
"content": "2023年科技趋势显示人工智能、量子计算和生物技术将成为主要发展方向..."
},
"https://mp.weixin.qq.com/s/ai202301": {
"title": "人工智能的最新进展",
"author": "AI研究团队",
"publish_time": "2023-02-01",
"content": "人工智能技术在2023年取得了显著进展,特别是在自然语言处理和计算机视觉领域..."
},
"https://mp.weixin.qq.com/s/blockchain202302": {
"title": "区块链技术的应用",
"author": "区块链专家",
"publish_time": "2023-02-20",
"content": "区块链技术作为分布式账本技术,将在金融、供应链管理等领域发挥重要作用..."
},
"https://mp.weixin.qq.com/s/quantum001": {
"title": "量子计算的基本原理",
"author": "量子物理实验室",
"publish_time": "2023-03-10",
"content": "量子计算利用量子力学的特性,能够处理传统计算机难以解决的问题..."
},
"https://mp.weixin.qq.com/s/quantum002": {
"title": "量子计算的应用前景",
"author": "未来科技研究",
"publish_time": "2023-03-15",
"content": "量子计算在密码学、药物研发和材料科学等领域有广泛的应用前景..."
},
"https://mp.weixin.qq.com/s/medical202301": {
"title": "医疗技术的创新突破",
"author": "医疗科技前沿",
"publish_time": "2023-04-05",
"content": "医疗技术在2023年迎来了多项创新突破,包括精准医疗、远程手术和AI辅助诊断等。这些技术的发展将大大提高医疗服务的效率和质量。技术创新是推动医疗进步的关键因素,新技术的应用使得许多疾病的治疗变得更加精准和有效。技术整合是未来医疗发展的重要方向,多技术融合将带来更多可能性。技术标准化是确保医疗安全的基础,技术普及是提高全民健康水平的重要手段。技术伦理是医疗创新必须考虑的因素,技术监管是保障公众利益的必要措施。技术人才培养是医疗技术持续发展的保障,技术交流是促进创新的催化剂。技术评估是确保医疗技术有效性的重要环节,技术更新是跟上时代发展的必然要求。"
},
"https://mp.weixin.qq.com/s/author001": {
"title": "创新思维与企业发展",
"author": "企业管理研究",
"publish_time": "2023-02-10",
"content": "创新思维是推动企业发展的核心动力..."
},
"https://mp.weixin.qq.com/s/author002": {
"title": "创新管理实践",
"author": "管理学前沿",
"publish_time": "2023-03-05",
"content": "创新管理是企业保持竞争优势的关键..."
},
"https://mp.weixin.qq.com/s/final001": {
"title": "创新技术的未来趋势",
"author": "科技观察",
"publish_time": "2023-05-20",
"content": "创新技术将继续引领未来发展方向..."
}
}
# 模拟文章链接
MOCK_LINKS = {
"https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NTAwMzQyMA==": [
"https://mp.weixin.qq.com/s/ai202301",
"https://mp.weixin.qq.com/s/blockchain202302",
"https://mp.weixin.qq.com/s/quantum001"
],
"https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5MTE3NjQwMQ==": [
"https://mp.weixin.qq.com/s/quantum001",
"https://mp.weixin.qq.com/s/quantum002",
"https://mp.weixin.qq.com/s/medical202301"
],
"https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NzA1NzQwNA==": [
"https://mp.weixin.qq.com/s/author001",
"https://mp.weixin.qq.com/s/author002",
"https://mp.weixin.qq.com/s/final001"
],
"https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NDM0NzA5MA==": [
"https://mp.weixin.qq.com/s/ai202301",
"https://mp.weixin.qq.com/s/quantum001",
"https://mp.weixin.qq.com/s/final001"
]
}
# 模拟MCP服务器工具函数
class MockMCPServer:
def __init__(self):
self.sessions = {}
def create_session(self, session_id):
if session_id in self.sessions:
return f"会话 {session_id} 已存在"
self.sessions[session_id] = {}
return f"成功创建会话: {session_id}"
def list_sessions(self):
return list(self.sessions.keys())
def get_article_content(self, url, session_id=None):
if url in MOCK_ARTICLES:
article = MOCK_ARTICLES[url]
return f"标题: {article['title']}\n作者: {article['author']}\n发布时间: {article['publish_time']}\nURL: {url}\n\n内容:\n{article['content']}"
return f"未找到文章: {url}"
def extract_article_links(self, url, session_id=None):
if url in MOCK_LINKS:
return MOCK_LINKS[url]
return []
def close_session(self, session_id):
if session_id in self.sessions:
del self.sessions[session_id]
return f"成功关闭会话: {session_id}"
return f"会话 {session_id} 不存在"
# 验证评估问题
def verify_evaluation_questions():
server = MockMCPServer()
results = []
# 问题1验证
server.create_session("test_session")
content = server.get_article_content("https://mp.weixin.qq.com/s/2023tech001", "test_session")
server.close_session("test_session")
author_match = re.search(r'作者: (\w+)', content)
author = author_match.group(1) if author_match else None
results.append(("问题1", author == "科技前沿"))
# 问题2验证
initial_sessions = server.list_sessions()
server.create_session("research_session")
updated_sessions = server.list_sessions()
server.close_session("research_session")
results.append(("问题2", len(updated_sessions) == 1))
# 问题3验证
server.create_session("session1")
server.create_session("session2")
content1 = server.get_article_content("https://mp.weixin.qq.com/s/ai202301", "session1")
content2 = server.get_article_content("https://mp.weixin.qq.com/s/blockchain202302", "session2")
server.close_session("session1")
server.close_session("session2")
time_match = re.search(r'发布时间: (\d{4}-\d{2}-\d{2})', content1)
time = time_match.group(1) if time_match else None
results.append(("问题3", time == "2023-01-15"))
# 问题4验证
server.create_session("link_session")
links = server.extract_article_links("https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NTAwMzQyMA==", "link_session")
first_link_content = server.get_article_content(links[0], "link_session") if links else ""
server.close_session("link_session")
results.append(("问题4", "人工智能" in first_link_content))
# 问题5验证
server.create_session("compare_session")
content1 = server.get_article_content("https://mp.weixin.qq.com/s/quantum001", "compare_session")
content2 = server.get_article_content("https://mp.weixin.qq.com/s/quantum002", "compare_session")
server.close_session("compare_session")
author1_match = re.search(r'作者: (\w+)', content1)
author2_match = re.search(r'作者: (\w+)', content2)
author1 = author1_match.group(1) if author1_match else None
author2 = author2_match.group(1) if author2_match else None
results.append(("问题5", author1 != author2))
# 问题6验证
server.create_session("multi_session")
links = server.extract_article_links("https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5MTE3NjQwMQ==", "multi_session")
second_link_content = server.get_article_content(links[1], "multi_session") if len(links) > 1 else ""
server.close_session("multi_session")
results.append(("问题6", "机器学习" in second_link_content))
# 问题7验证
server.create_session("check_session")
content = server.get_article_content("https://mp.weixin.qq.com/s/medical202301", "check_session")
sessions = server.list_sessions()
server.close_session("check_session")
content_length = len(content)
results.append(("问题7", 2400 < content_length < 2600))
# 问题8验证
server.create_session("author_session")
content1 = server.get_article_content("https://mp.weixin.qq.com/s/author001", "author_session")
content2 = server.get_article_content("https://mp.weixin.qq.com/s/author002", "author_session")
server.close_session("author_session")
time1_match = re.search(r'发布时间: (\d{4}-\d{2}-\d{2})', content1)
time2_match = re.search(r'发布时间: (\d{4}-\d{2}-\d{2})', content2)
time1 = time1_match.group(1) if time1_match else None
time2 = time2_match.group(1) if time2_match else None
results.append(("问题8", time1 < time2))
# 问题9验证
server.create_session("content_session")
links = server.extract_article_links("https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NzA1NzQwNA==", "content_session")
last_link_content = server.get_article_content(links[-1], "content_session") if links else ""
server.close_session("content_session")
tech_count = last_link_content.count("技术")
results.append(("问题9", tech_count == 8))
# 问题10验证
server.create_session("final_session")
content = server.get_article_content("https://mp.weixin.qq.com/s/final001", "final_session")
links = server.extract_article_links("https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NDM0NzA5MA==", "final_session")
first_link_content = server.get_article_content(links[0], "final_session") if links else ""
server.close_session("final_session")
title_match = re.search(r'标题: (.+)', content)
title = title_match.group(1) if title_match else ""
results.append(("问题10", "创新" in title and "创新" in first_link_content))
return results
# 执行验证
results = verify_evaluation_questions()
print("评估问题验证结果:")
for question, passed in results:
print(f"{question}: {'通过' if passed else '失败'}")
passed_count = sum(1 for _, passed in results if passed)
print(f"\n总计: {passed_count}/{len(results)} 问题通过验证")