xiaoyukkkk commited on
Commit
8ed6906
·
verified ·
1 Parent(s): 96d721a

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +16 -38
main.py CHANGED
@@ -1761,7 +1761,7 @@ def parse_images_from_response(data_list: list) -> tuple[list, str]:
1761
  if not sar:
1762
  continue
1763
 
1764
- # 获取session信息
1765
  session_info = sar.get("sessionInfo", {})
1766
  if session_info.get("session"):
1767
  session_name = session_info["session"]
@@ -1775,13 +1775,11 @@ def parse_images_from_response(data_list: list) -> tuple[list, str]:
1775
 
1776
  # 检查file字段(图片生成的关键)
1777
  file_info = content.get("file")
1778
- if file_info:
1779
- logger.info(f"[IMAGE] [DEBUG] 发现file字段: {file_info}")
1780
- if file_info.get("fileId"):
1781
- file_ids.append({
1782
- "fileId": file_info["fileId"],
1783
- "mimeType": file_info.get("mimeType", "image/png")
1784
- })
1785
 
1786
  return file_ids, session_name
1787
 
@@ -1991,59 +1989,39 @@ async def stream_chat_generator(session: str, text_content: str, file_ids: List[
1991
 
1992
  # 处理图片生成
1993
  if json_objects:
1994
- logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 开始解析图片,共{len(json_objects)}个响应对象")
1995
  file_ids, session_name = parse_images_from_response(json_objects)
1996
- logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 解析结果: {len(file_ids)}张图片")
1997
- logger.info(f"[IMAGE] [DEBUG] 响应中的session路径: {session_name}")
1998
 
1999
  if file_ids and session_name:
2000
  logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 检测到{len(file_ids)}张生成图片")
2001
 
2002
  try:
2003
- # 获取base_url
2004
  base_url = get_base_url(request) if request else ""
2005
- logger.info(f"[IMAGE] [DEBUG] 使用base_url: {base_url}")
2006
-
2007
- # 获取文件元数据,找到正确的session路径
2008
  file_metadata = await get_session_file_metadata(account_manager, session_name, request_id)
2009
- logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 获取到{len(file_metadata)}个文件元数据")
2010
 
2011
- # 并行下载所有图片(提升多图响应速度)
2012
  download_tasks = []
2013
  for file_info in file_ids:
2014
  fid = file_info["fileId"]
2015
  mime = file_info["mimeType"]
2016
-
2017
- # 从元数据中获取正确的session路径
2018
  meta = file_metadata.get(fid, {})
2019
  correct_session = meta.get("session") or session_name
2020
-
2021
- # 创建下载任务
2022
  task = download_image_with_jwt(account_manager, correct_session, fid, request_id)
2023
  download_tasks.append((fid, mime, task))
2024
 
2025
- # 并行执行所有下载任务
2026
  results = await asyncio.gather(*[task for _, _, task in download_tasks], return_exceptions=True)
2027
 
2028
  # 处理下载结果
2029
  for idx, ((fid, mime, _), result) in enumerate(zip(download_tasks, results), 1):
2030
- try:
2031
- if isinstance(result, Exception):
2032
- logger.error(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片{idx}下载失败: {type(result).__name__}: {str(result)[:100]}")
2033
- continue
2034
-
2035
- # 保存图片
2036
- image_data = result
2037
- image_url = save_image_to_hf(image_data, chat_id, fid, mime, base_url)
2038
- logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片{idx}已保存: {image_url}")
2039
-
2040
- # 返回Markdown格式图片
2041
- markdown = f"\n\n![生成的图片]({image_url})\n\n"
2042
- chunk = create_chunk(chat_id, created_time, model_name, {"content": markdown}, None)
2043
- yield f"data: {chunk}\n\n"
2044
- except Exception as e:
2045
- logger.error(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片{idx}处理失败: {str(e)}")
2046
 
 
 
 
2047
 
2048
  except Exception as e:
2049
  logger.error(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片处理失败: {str(e)}")
 
1761
  if not sar:
1762
  continue
1763
 
1764
+ # 获取session信息(优先使用最新的)
1765
  session_info = sar.get("sessionInfo", {})
1766
  if session_info.get("session"):
1767
  session_name = session_info["session"]
 
1775
 
1776
  # 检查file字段(图片生成的关键)
1777
  file_info = content.get("file")
1778
+ if file_info and file_info.get("fileId"):
1779
+ file_ids.append({
1780
+ "fileId": file_info["fileId"],
1781
+ "mimeType": file_info.get("mimeType", "image/png")
1782
+ })
 
 
1783
 
1784
  return file_ids, session_name
1785
 
 
1989
 
1990
  # 处理图片生成
1991
  if json_objects:
 
1992
  file_ids, session_name = parse_images_from_response(json_objects)
 
 
1993
 
1994
  if file_ids and session_name:
1995
  logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 检测到{len(file_ids)}张生成图片")
1996
 
1997
  try:
 
1998
  base_url = get_base_url(request) if request else ""
 
 
 
1999
  file_metadata = await get_session_file_metadata(account_manager, session_name, request_id)
 
2000
 
2001
+ # 并行下载所有图片
2002
  download_tasks = []
2003
  for file_info in file_ids:
2004
  fid = file_info["fileId"]
2005
  mime = file_info["mimeType"]
 
 
2006
  meta = file_metadata.get(fid, {})
2007
  correct_session = meta.get("session") or session_name
 
 
2008
  task = download_image_with_jwt(account_manager, correct_session, fid, request_id)
2009
  download_tasks.append((fid, mime, task))
2010
 
 
2011
  results = await asyncio.gather(*[task for _, _, task in download_tasks], return_exceptions=True)
2012
 
2013
  # 处理下载结果
2014
  for idx, ((fid, mime, _), result) in enumerate(zip(download_tasks, results), 1):
2015
+ if isinstance(result, Exception):
2016
+ logger.error(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片{idx}下载失败: {type(result).__name__}")
2017
+ continue
2018
+
2019
+ image_url = save_image_to_hf(result, chat_id, fid, mime, base_url)
2020
+ logger.info(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片{idx}已保存: {image_url}")
 
 
 
 
 
 
 
 
 
 
2021
 
2022
+ markdown = f"\n\n![生成的图片]({image_url})\n\n"
2023
+ chunk = create_chunk(chat_id, created_time, model_name, {"content": markdown}, None)
2024
+ yield f"data: {chunk}\n\n"
2025
 
2026
  except Exception as e:
2027
  logger.error(f"[IMAGE] [{account_manager.config.account_id}] [req_{request_id}] 图片处理失败: {str(e)}")