diff --git a/common/utils.py b/common/utils.py index cdb8b6b..0230450 100644 --- a/common/utils.py +++ b/common/utils.py @@ -323,24 +323,6 @@ def wx_voice(text: str): print(f"发生错误:{e}") return None, None # 发生错误时返回 None - -def save_contacts_brief_to_redis(wxid, friends): - # 将联系人信息保存到 Redis,使用一个合适的 key - hash_key = f"__AI_OPS_WX__:CONTACTS_BRIEF:{wxid}" - - # 获取缓存中的数据,如果缓存不存在则初始化为空列表 - cache_str = redis_helper.redis_helper.get_hash_field(hash_key, "data") - cache = json.loads(cache_str) if cache_str else [] - - # 合并联系人信息 - cache.extend(friends) - - # 将合并后的联系人数据保存回 Redis - redis_helper.redis_helper.update_hash_field(hash_key, "data", { - "data": json.dumps(cache, ensure_ascii=False) - }) - - def get_login_info_by_wxid(wxid: str) ->dict: # 使用 SCAN 避免一次性返回所有的匹配键,逐步扫描 cursor = 0 diff --git a/resources/messages_resource.py b/resources/messages_resource.py index e901390..180f19d 100644 --- a/resources/messages_resource.py +++ b/resources/messages_resource.py @@ -167,7 +167,7 @@ def handle_text(token_id,app_id, wxid,msg_data,from_wxid, to_wxid): memory.USER_INTERACTIVE_CACHE[wxid] = { "interactive":False } - text='' + text='' for item in reply_content: if item["type"] == "text": text=item["text"]["content"] @@ -183,6 +183,20 @@ def handle_text(token_id,app_id, wxid,msg_data,from_wxid, to_wxid): messages_to_send=gewe_chat.wxchat.save_session_messages_to_cache(hash_key, prompt) res=fast_gpt_api(messages_to_send,f'{wxid}-{callback_to_user}') reply_content=res["choices"][0]["message"]["content"] + # print('-------------------------------------------------') + # print(reply_content) + # print('-------------------------------------------------') + + if isinstance(reply_content, list) : + reply_content=reply_content[0].get('text').get("content") + # print(reply_content) + # print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') + + # try: + # json_data = json.loads(reply_content) + # reply_content=json_data[0].get('text').get("content") + # except ValueError: + # print("reply_content is a string, but not a valid JSON.") else: reply_content=text else: @@ -321,6 +335,11 @@ def handle_text_group(token_id,app_id, wxid,msg_data,from_wxid, to_wxid): logger.info("发送对话 %s",input_message) else: logger.info('群聊公开消息') + callback_to_user=msg_data["FromUserName"]["string"] + dialogue_message=[{"type": "text", "text": msg_content}] + input_message=utils.dialogue_message(callback_to_user,wxid,dialogue_message) + kafka_helper.kafka_client.produce_message(input_message) + logger.info("发送对话 %s",input_message) return def handle_image(token_id,app_id, wxid,msg_data,from_wxid, to_wxid): @@ -643,8 +662,8 @@ def get_messages_from_cache(hash_key,object:object)->list: return messages def fast_gpt_api(messages:list,session_id:str): - #api_key="sk-tdi7u0zuLsR0JpPMGBeFZxymOpL0zoFVafX8EEEvEakIDAGQ22NyQ6w" - api_key="sk-uJDBdKmJVb2cmfldGOvlIY6Qx0AzqWMPD3lS1IzgQYzHNOXv9SKNI" + api_key="sk-jr69ONIehfGKe9JFphuNk4DU5Y5wooHKHhQv7oSnFzVbwCnW65fXO9kvH" #测试 + #api_key="sk-uJDBdKmJVb2cmfldGOvlIY6Qx0AzqWMPD3lS1IzgQYzHNOXv9SKNI" #开发2 api_url = "http://106.15.182.218:3000/api/v1/chat/completions" headers = { @@ -657,7 +676,7 @@ def fast_gpt_api(messages:list,session_id:str): "chatId": session_id, "detail": True } - print(json.dumps(data,ensure_ascii=False)) + #print(json.dumps(data,ensure_ascii=False)) logger.info("[CHATGPT] 请求={}".format(json.dumps(data, ensure_ascii=False))) response = requests.post(url=api_url, headers=headers, data=json.dumps(data), timeout=600) response.raise_for_status() diff --git a/wechat/gewe_chat.py b/wechat/gewe_chat.py index 15f0eb0..2f620f7 100644 --- a/wechat/gewe_chat.py +++ b/wechat/gewe_chat.py @@ -553,7 +553,7 @@ class GeWeChatCom: return response_object.get('ret',None),response_object.get('msg',None),response_object.get('data',None) ############################### 其他 ############################### - def save_session_messages_to_cache(hash_key,object:object)->list: + def save_session_messages_to_cache(self, hash_key,object:object)->list: ''' 对话列表 '''