121 lines
3.7 KiB
Python
121 lines
3.7 KiB
Python
|
|
import json
|
|||
|
|
import subprocess
|
|||
|
|
import tempfile
|
|||
|
|
import os
|
|||
|
|
from json_openai import llm_format_text, EXTRACT_OUNTLINE_SYSTEM_PROMPT
|
|||
|
|
|
|||
|
|
def create_temp_test_file(markdown_content):
|
|||
|
|
"""创建临时的TypeScript测试文件"""
|
|||
|
|
test_content = f'''import {{ markdownToJSON }} from './markdownToJSON.js';
|
|||
|
|
|
|||
|
|
// AI生成的Markdown内容
|
|||
|
|
const markdown = `{markdown_content}`;
|
|||
|
|
|
|||
|
|
// 转换并输出结果
|
|||
|
|
const result = markdownToJSON(markdown);
|
|||
|
|
console.log('转换结果:');
|
|||
|
|
console.log(JSON.stringify(result, null, 2));
|
|||
|
|
'''
|
|||
|
|
|
|||
|
|
with open('temp_test_markdown.ts', 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(test_content)
|
|||
|
|
|
|||
|
|
return 'temp_test_markdown.ts'
|
|||
|
|
|
|||
|
|
def run_typescript_converter(test_file):
|
|||
|
|
"""编译并运行TypeScript测试文件"""
|
|||
|
|
try:
|
|||
|
|
# 编译TypeScript文件
|
|||
|
|
compile_result = subprocess.run([
|
|||
|
|
'npx', 'tsc', test_file, '--outDir', 'dist', '--target', 'ES2020', '--module', 'ES2020'
|
|||
|
|
], capture_output=True, text=True)
|
|||
|
|
|
|||
|
|
if compile_result.returncode != 0:
|
|||
|
|
print(f"编译错误: {compile_result.stderr}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
# 运行编译后的JavaScript文件
|
|||
|
|
js_file = test_file.replace('.ts', '.js').replace('./', 'dist/')
|
|||
|
|
run_result = subprocess.run([
|
|||
|
|
'node', js_file
|
|||
|
|
], capture_output=True, text=True)
|
|||
|
|
|
|||
|
|
if run_result.returncode == 0:
|
|||
|
|
return run_result.stdout
|
|||
|
|
else:
|
|||
|
|
print(f"运行错误: {run_result.stderr}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"执行TypeScript转换时出错: {e}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
# 测试配置
|
|||
|
|
model = "glm-4.5"
|
|||
|
|
base_url = "https://open.bigmodel.cn/api/paas/v4/"
|
|||
|
|
api_key = "ce39bdd4fcf34ec0aec75072bc9ff988.hAp7HZTVUwy7vImn"
|
|||
|
|
|
|||
|
|
# 测试内容
|
|||
|
|
test_content = """
|
|||
|
|
人工智能的发展历程
|
|||
|
|
|
|||
|
|
早期发展
|
|||
|
|
人工智能的概念最早可以追溯到1950年代。图灵测试的提出标志着AI研究的开始。
|
|||
|
|
|
|||
|
|
图灵测试
|
|||
|
|
图灵测试是判断机器是否具有智能的重要标准。
|
|||
|
|
|
|||
|
|
现代发展
|
|||
|
|
近年来,深度学习技术的突破推动了AI的快速发展。
|
|||
|
|
|
|||
|
|
深度学习
|
|||
|
|
深度学习通过神经网络模拟人脑的工作方式。
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 构建消息
|
|||
|
|
messages = [
|
|||
|
|
{"role": "system", "content": EXTRACT_OUNTLINE_SYSTEM_PROMPT},
|
|||
|
|
{"role": "user", "content": f"请分析以下文章内容并转换为Markdown格式:\n\n{test_content}"}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
print("=== 第一步:AI处理生成Markdown ===")
|
|||
|
|
try:
|
|||
|
|
markdown_result = llm_format_text(model, base_url, api_key, messages, 2000)
|
|||
|
|
print("AI生成的Markdown:")
|
|||
|
|
print(markdown_result)
|
|||
|
|
print("\n" + "="*50 + "\n")
|
|||
|
|
|
|||
|
|
print("=== 第二步:Markdown转换为JSON ===")
|
|||
|
|
# 创建临时测试文件
|
|||
|
|
test_file = create_temp_test_file(markdown_result)
|
|||
|
|
|
|||
|
|
# 运行TypeScript转换
|
|||
|
|
json_result = run_typescript_converter(test_file)
|
|||
|
|
|
|||
|
|
if json_result:
|
|||
|
|
print("转换后的JSON结构:")
|
|||
|
|
print(json_result)
|
|||
|
|
else:
|
|||
|
|
print("转换失败")
|
|||
|
|
|
|||
|
|
# 清理临时文件
|
|||
|
|
try:
|
|||
|
|
os.remove(test_file)
|
|||
|
|
js_file = test_file.replace('.ts', '.js').replace('./', 'dist/')
|
|||
|
|
if os.path.exists(js_file):
|
|||
|
|
os.remove(js_file)
|
|||
|
|
except:
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"处理失败: {e}")
|
|||
|
|
print("可能的原因:")
|
|||
|
|
print("1. API密钥无效或过期")
|
|||
|
|
print("2. 网络连接问题")
|
|||
|
|
print("3. API服务不可用")
|
|||
|
|
print("4. 模型名称不正确")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|