feat(utils): 优化 Moonshot生成逻辑并添加重试机制- 在 Moonshot 生成逻辑中添加了对 429错误的重试机制

- 当遇到 429 错误时,等待 65秒后重试
- 更新了测试示例,直接返回固定文本以简化测试过程
- 更新了资源下载链接
This commit is contained in:
linyq 2024-11-15 15:44:17 +08:00
parent af9e7fa279
commit 1a16d2b655
3 changed files with 21 additions and 13 deletions

View File

@ -7,5 +7,5 @@ os.environ["HTTPS_PROXY"] = config.proxy.get("https")
genai.configure(api_key=config.app.get("vision_gemini_api_key")) genai.configure(api_key=config.app.get("vision_gemini_api_key"))
model = genai.GenerativeModel("gemini-1.5-flash") model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Explain how AI works") response = model.generate_content("直接回复我文本'当前网络可用'")
print(response.text) print(response.text)

View File

@ -7,6 +7,7 @@ from typing import List, Dict
from datetime import datetime from datetime import datetime
from openai import OpenAI from openai import OpenAI
import google.generativeai as genai import google.generativeai as genai
import time
class BaseGenerator: class BaseGenerator:
@ -222,17 +223,24 @@ class MoonshotGenerator(BaseGenerator):
} }
def _generate(self, messages: list, params: dict) -> any: def _generate(self, messages: list, params: dict) -> any:
"""实现Moonshot特定的生成逻辑""" """实现Moonshot特定的生成逻辑包含429错误重试机制"""
try: while True:
response = self.client.chat.completions.create( try:
model=self.model_name, response = self.client.chat.completions.create(
messages=messages, model=self.model_name,
**params messages=messages,
) **params
return response )
except Exception as e: return response
logger.error(f"Moonshot generation error: {str(e)}") except Exception as e:
raise error_str = str(e)
if "Error code: 429" in error_str:
logger.warning("Moonshot API 触发限流等待65秒后重试...")
time.sleep(65) # 等待65秒后重试
continue
else:
logger.error(f"Moonshot generation error: {error_str}")
raise
def _process_response(self, response: any) -> str: def _process_response(self, response: any) -> str:
"""处理Moonshot的响应""" """处理Moonshot的响应"""

View File

@ -18,7 +18,7 @@ set "urls_paths[1]=https://zenodo.org/records/13293144/files/MicrosoftYaHeiNorma
set "urls_paths[2]=https://zenodo.org/records/13293144/files/STHeitiLight.ttc|.\resource\fonts" set "urls_paths[2]=https://zenodo.org/records/13293144/files/STHeitiLight.ttc|.\resource\fonts"
set "urls_paths[3]=https://zenodo.org/records/13293144/files/STHeitiMedium.ttc|.\resource\fonts" set "urls_paths[3]=https://zenodo.org/records/13293144/files/STHeitiMedium.ttc|.\resource\fonts"
set "urls_paths[4]=https://zenodo.org/records/13293144/files/UTM%20Kabel%20KT.ttf|.\resource\fonts" set "urls_paths[4]=https://zenodo.org/records/13293144/files/UTM%20Kabel%20KT.ttf|.\resource\fonts"
set "urls_paths[5]=https://zenodo.org/records/13293129/files/demo.mp4|.\resource\videos" set "urls_paths[5]=https://zenodo.org/records/14167125/files/test.mp4|.\resource\videos"
set "urls_paths[6]=https://zenodo.org/records/13293150/files/output000.mp3|.\resource\songs" set "urls_paths[6]=https://zenodo.org/records/13293150/files/output000.mp3|.\resource\songs"
set "urls_paths[7]=https://zenodo.org/records/13293150/files/output001.mp3|.\resource\songs" set "urls_paths[7]=https://zenodo.org/records/13293150/files/output001.mp3|.\resource\songs"
set "urls_paths[8]=https://zenodo.org/records/13293150/files/output002.mp3|.\resource\songs" set "urls_paths[8]=https://zenodo.org/records/13293150/files/output002.mp3|.\resource\songs"