Explorar el Código

调整群回复

develop
H Vs hace 1 día
padre
commit
73118681d7
Se han modificado 1 ficheros con 54 adiciones y 1 borrados
  1. +54
    -1
      app/endpoints/pipeline_endpoint.py

+ 54
- 1
app/endpoints/pipeline_endpoint.py Ver fichero

@@ -779,7 +779,60 @@ async def handle_text_group_async(request: Request,token_id,app_id, wxid,msg_dat
reply_content='@'+extract_nickname(msg_push_content) + reply_content

await request.app.state.gewe_service.post_text_async(token_id,app_id,callback_to_user,reply_content)
#await request.app.state.gewe_service.post_text_async(token_id,app_id,callback_to_user,reply_content)
if '不回复' in reply_content:
logger.warning(f"{from_wxid} 群聊中 AI回答<不回复>,跳过微信回复")
await request.app.state.gewe_service.save_session_messages_to_cache_async(hash_key, {"role": "assistant", "content": reply_content})
return

k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
wxid_nickname=loginfo.get("nickName")

message_lock=request.app.state.message_lock[app_id]
# 昵称替换
replacements = {
'{昵称}': wxid_nickname,
'{好友昵称}': extract_nickname(msg_push_content)
}
reply_content=replace_placeholders(reply_content, replacements)

# 判断图片url
img_urls,reply_content=extract_and_replace_image_urls(reply_content)
if img_urls:
async with message_lock:
await ai_post_text_split_async_async(request, token_id, app_id, callback_to_user, reply_content)
await asyncio.sleep(random.uniform(1.5, 3))
for img_url in img_urls:
await request.app.state.gewe_service.post_image_async(token_id, app_id, callback_to_user, img_url)
await asyncio.sleep(random.uniform(1.5, 3))

# 判断视频url
video_urls,reply_content=extract_and_replace_video_urls(reply_content)
if video_urls:
async with message_lock:
await ai_post_text_split_async_async(request, token_id, app_id, callback_to_user, reply_content)
await asyncio.sleep(random.uniform(1.5, 3))
for video_url in video_urls:
parsed_url = urlparse(video_url)
filename = os.path.basename(parsed_url.path)
tmp_file_path = os.path.join(os.getcwd(),'tmp', filename) # 拼接完整路径
thumbnail_path=tmp_file_path.replace('.mp4','.jpg')
video_thumb_url,video_duration =download_video_and_get_thumbnail(video_url,thumbnail_path)
logger.info(f'{wxid} 视频缩略图 {video_thumb_url} 时长 {video_duration}')
ret,ret_msg,res = await request.app.state.gewe_service.post_video_async(token_id, app_id, callback_to_user, video_url,video_thumb_url,video_duration)
if ret!=200:
logger.warning(f'{wxid} 发送视频{video_url} 到 {callback_to_user} 失败,{ret_msg}')
await asyncio.sleep(random.uniform(1.5, 3))
# 发送AI微信回复
if (not video_urls) and (not img_urls):
async with message_lock:
await ai_post_text_split_async_async(request, token_id, app_id, callback_to_user, reply_content)

await request.app.state.gewe_service.save_session_messages_to_cache_async(hash_key, {"role": "assistant", "content": reply_content})
# 回复的对话
reply_content=f'{wxid}:\n'+ reply_content


Cargando…
Cancelar
Guardar