script_check.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import os
  2. import asyncio
  3. from typing import Optional, Dict
  4. from taskflow import FileIOHandler
  5. from api_modules.ark_client_async import AsyncArkClient
  6. from api_modules.ark_client import ArkMessage, APIError
  7. from taskflow import get_logger
  8. io_handler = FileIOHandler()
  9. logger = get_logger("examples.refer_video_create.mcps.script_check")
  10. prompt_check_image_script = \
  11. """
  12. 【Role】
  13. 你是一个非常细心的图像质量评估专家
  14. 【Background】
  15. 我正在使用AIGC工具进行图像生成,但是经常出现生成的图像存在缺陷的情况
  16. 我需要你帮忙审查生成的图像,当你审查判断为图像存在缺陷时,我便筛除这张图像
  17. 【Goal】
  18. 分析输入图像是否存在AI生成的不合理之处,包括但不限于:
  19. - 解剖/比例错误:手指数量异常、头身比失调、肢体扭曲等
  20. - 空间/透视错误:多人物不在同一地平线、遮挡关系矛盾、近大远小失效、多角色空间布局错误、人物站位等
  21. - 物体一致性缺失:文本说“穿红衣服”图像却是蓝衣;“三只猫”却画了四只等
  22. - 伪影与纹理异常:模糊区域、重复图案、非自然噪点(如“融化的脸”)等
  23. - 常识/逻辑违背:人坐在空中无椅子、钟表指针反向、水往高处流等
  24. - 穿模问题:人物或物体穿透了其他人物或物体等任何穿模问题
  25. **需重点关注的问题**(需重点关注,务必严格审查):
  26. - 人体是否存在不合理的变形或扭曲、身体构造错误等、关节异常等
  27. - 多人物场景中,人物是否存在不合理的遮挡、穿透、重叠、融合等问题(包括但**不限于**:人物穿透了其他人物、人物穿透了物体)
  28. - 人物的头、四肢、关节、完整的身体构造必须仔细一一检查
  29. - 是否存在物品悬浮、悬空、漂浮等不合理现象(包括但**不限于**:人物手上的包包、手机、书包等物品在不拿着的情况下悬浮、悬空、漂浮等;或物品突然消失或突然出现的情况)
  30. - 是否存在人物身体呈侧后方姿态,但头部却面向镜头的情况(需要思考推理判断,可通过头、身体、四肢所面向的方向/角度来判断)
  31. 【Constraints】
  32. - 对可能存在的问题进行逐个分析审查
  33. - 你的内部分析推理不能少于5000字!(这部分不用输出,但你必须进行内部推理,确保没有遗漏问题!)
  34. - 以JSON格式输出,仅包含**review_result**(取值范围:ture/false)和**result reason**两个字段
  35. - 除以JSON格式输出结果之外,不要用任何其他内容输出(重要!)
  36. 【Output Format】
  37. ```json
  38. {
  39. "review_result": // bool;审查结果;必填
  40. "result_reason": // text;对审查结果的解释;必填;字数不少于1000字
  41. }
  42. ```
  43. ## 让我们一步步来分析
  44. """
  45. prompt_check_video_script = \
  46. """
  47. 【Role】
  48. 你是一个非常细心且有工作激情的视频质量评估专家
  49. 【Background】
  50. 我正在使用AIGC工具进行视频生成,但是经常出现生成的视频存在缺陷的情况
  51. 我需要你帮忙审查生成的视频,当你审查判断为视频存在缺陷时,我便筛除这段视频
  52. 【Goal】
  53. 分析输入视频是否存在AI生成的不合理之处,包括但不限于:
  54. - 解剖/比例错误:手指数量异常、头身比失调、肢体扭曲等
  55. - 空间/透视错误:多人物不在同一地平线、遮挡关系矛盾、近大远小失效、多角色空间布局错误、人物站位等
  56. - 常识/逻辑违背:人坐在空中无椅子、物品悬浮悬空漂浮等
  57. - 穿模问题:人物或物体穿透了其他人物或物体等任何穿模问题
  58. **需重点关注的问题**(需重点关注,务必严格审查):
  59. - 人物运动过程中,肢体是否存在不合理的变形或扭曲
  60. - 多人物场景中,人物是否存在不合理的遮挡、穿透、重叠、融合等问题(包括但**不限于**:人物穿透了其他人物、人物穿透了物体)
  61. - 任何物品是否存在突然消失或突然出现的情况(包括但**不限于**:人物手中的物品突然消失或突然出现)
  62. 【Constraints】
  63. - 对可能存在的问题进行逐个分析审查
  64. - 除列举的问题之外,不得遗漏任何你发现的不合理、不符合物理规律、不符合常识、不符合逻辑的问题(重要!)
  65. - 你需要先假定如果这个视频存在质量问题,那么经过你的仔细分析,具体的质量问题是什么?(重要!这是避免遗漏问题的关键!)
  66. - 你的内部推理不能少于5000字!(这部分不用输出,但你必须进行内部推理,确保没有遗漏问题!)
  67. - 以JSON格式输出,仅包含**review_result**(取值范围:ture/false)和**result reason**两个字段
  68. - 除以JSON格式输出结果之外,不要用任何其他内容输出(重要!)
  69. 【Output Format】
  70. ```json
  71. {
  72. "review_result": // bool;审查结果;必填
  73. "result_reason": // text;对审查结果的解释;必填;字数不少于1000字
  74. }
  75. ```
  76. ## 请对输入图像逐像素逐像素仔细检查分析,得出经过审慎审查后的结果
  77. """
  78. async def check_image_script(
  79. client: AsyncArkClient,
  80. image_prompt: str,
  81. image_url: str
  82. ) -> str:
  83. user_message = ArkMessage(role="user")
  84. user_message.add_text(image_prompt)
  85. user_message.add_image(image_url)
  86. try:
  87. response = await client.chat(
  88. model="doubao-seed-1-6-251015",
  89. messages=[user_message],
  90. system_prompt=prompt_check_image_script,
  91. )
  92. logger.info(f"检查图像脚本成功")
  93. return client.get_response_text(response)
  94. except APIError as e:
  95. logger.error(f"API错误: {e}")
  96. raise e
  97. async def check_video_script(
  98. client: AsyncArkClient,
  99. video_prompt: str,
  100. video_url: str
  101. ) -> str:
  102. user_message = ArkMessage(role="user")
  103. user_message.add_text(video_prompt)
  104. user_message.add_video(video_url)
  105. try:
  106. response = await client.chat(
  107. model="doubao-seed-1-6-251015",
  108. messages=[user_message],
  109. system_prompt=prompt_check_video_script,
  110. )
  111. logger.info(f"检查视频脚本成功")
  112. return client.get_response_text(response)
  113. except APIError as e:
  114. logger.error(f"API错误: {e}")
  115. raise e
  116. if __name__ == "__main__":
  117. async def main():
  118. async with AsyncArkClient() as client:
  119. review_result = await check_image_script(
  120. client=client,
  121. image_prompt="请逐像素逐像素仔细检查分析,得出经过审慎审查后的结果",
  122. image_url="./output/run_20260107_111034/storyboard/lens_1_run_20260107_111034.png"
  123. )
  124. print(review_result)
  125. review_result = await check_video_script(
  126. client=client,
  127. video_prompt="请逐帧逐帧仔细分析,得出经过审慎审查后的结果",
  128. video_url="./output/run_20260107_111034/video_clips/lens_1_run_20260107_111034.mp4"
  129. )
  130. print(review_result)
  131. asyncio.run(main())