| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- """
- 拍照解题功能测试脚本
- 测试百炼EduTutor API的调用
- 注意:需要提供用户的 DASHSCOPE_API_KEY
- """
- import os
- import sys
- import asyncio
- from pathlib import Path
- # 添加项目根目录到Python路径
- project_root = Path(__file__).parent.parent
- sys.path.insert(0, str(project_root))
- from app.services.edututor_client import BailianEduTutorClient
- async def test_answer_stream(api_key: str):
- """测试流式解答"""
- print("=" * 50)
- print("测试拍照解题流式API")
- print("=" * 50)
-
- # 创建客户端(使用用户的 API Key)
- client = BailianEduTutorClient(api_key=api_key)
-
- # 测试图片URL(需要替换为实际的图片URL)
- test_image_url = input("\n请输入题目图片URL: ").strip()
- if not test_image_url:
- test_image_url = "https://your-oss-bucket.oss-cn-hangzhou.aliyuncs.com/test-question.jpg"
-
- print(f"\n图片URL: {test_image_url}")
- print(f"年级: 6 (六年级)")
- print(f"学段: primary (小学)")
- print(f"学科: math (数学)")
- print("\n开始解题...\n")
-
- try:
- full_answer = ""
- async for event in client.answer_sse_async(
- image_url=test_image_url,
- grade=6,
- stage='primary',
- subject='math'
- ):
- if event['type'] == 'chunk':
- content = event['content']
- print(content, end='', flush=True)
- full_answer += content
- elif event['type'] == 'finish':
- tokens = event.get('tokens', {})
- print(f"\n\n{'=' * 50}")
- print(f"解题完成!")
- print(f"输入Token: {tokens.get('input', 0)}")
- print(f"输出Token: {tokens.get('output', 0)}")
- print(f"{'=' * 50}")
-
- print(f"\n完整答案长度: {len(full_answer)} 字符")
-
- except Exception as e:
- print(f"\n错误: {e}")
- import traceback
- traceback.print_exc()
- def test_answer_sync(api_key: str):
- """测试同步解答"""
- print("=" * 50)
- print("测试拍照解题同步API")
- print("=" * 50)
-
- # 创建客户端(使用用户的 API Key)
- client = BailianEduTutorClient(api_key=api_key)
-
- # 测试图片URL
- test_image_url = input("\n请输入题目图片URL: ").strip()
- if not test_image_url:
- test_image_url = "https://your-oss-bucket.oss-cn-hangzhou.aliyuncs.com/test-question.jpg"
-
- print(f"\n图片URL: {test_image_url}")
- print(f"年级: 6 (六年级)")
- print(f"学段: primary (小学)")
- print(f"学科: math (数学)")
- print("\n开始解题...\n")
-
- try:
- result = client.answer_sync(
- image_url=test_image_url,
- grade=6,
- stage='primary',
- subject='math'
- )
-
- print(f"解答内容:\n{result['answer']}")
- print(f"\n{'=' * 50}")
- print(f"输入Token: {result['input_tokens']}")
- print(f"输出Token: {result['output_tokens']}")
- print(f"{'=' * 50}")
-
- except Exception as e:
- print(f"\n错误: {e}")
- import traceback
- traceback.print_exc()
- def check_environment():
- """检查环境配置"""
- print("=" * 50)
- print("检查环境配置")
- print("=" * 50)
-
- required_vars = [
- 'BAILIAN_WORKSPACE_ID'
- ]
-
- missing_vars = []
- for var in required_vars:
- value = os.getenv(var)
- if value:
- print(f"✓ {var}: {value}")
- else:
- print(f"✗ {var}: 未设置")
- missing_vars.append(var)
-
- print("=" * 50)
-
- if missing_vars:
- print(f"\n警告: 缺少以下必需环境变量: {', '.join(missing_vars)}")
- print("请在 .env 文件中配置这些变量")
- return False
-
- print("\n✓ 环境配置检查通过")
- return True
- def main():
- """主函数"""
- print("\n拍照解题功能测试\n")
-
- # 检查环境
- if not check_environment():
- return
-
- # 获取用户 API Key
- print("\n" + "=" * 50)
- api_key = input("请输入用户的 DASHSCOPE_API_KEY: ").strip()
- if not api_key:
- print("错误: API Key 不能为空")
- return
-
- # 选择测试模式
- print("\n请选择测试模式:")
- print("1. 流式解答测试 (推荐)")
- print("2. 同步解答测试")
- print("3. 退出")
-
- choice = input("\n请输入选项 (1-3): ").strip()
-
- if choice == '1':
- asyncio.run(test_answer_stream(api_key))
- elif choice == '2':
- test_answer_sync(api_key)
- elif choice == '3':
- print("退出测试")
- else:
- print("无效选项")
- if __name__ == '__main__':
- main()
|