From 5bd35dddd247f59bd4a17b25b16b186cd25fe888 Mon Sep 17 00:00:00 2001 From: Chill Date: Tue, 11 Feb 2025 16:02:58 +0800 Subject: [PATCH] =?UTF-8?q?[18]kimi=E5=9B=BE=E7=89=87=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_chatgpt/models/ai_robot.py | 2 +- app_chatgpt/models/discuss_channel.py | 41 ++++++++++++++++----- app_chatgpt/views/discuss_channel_views.xml | 4 +- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/app_chatgpt/models/ai_robot.py b/app_chatgpt/models/ai_robot.py index f5a334e6..d75f2f3e 100644 --- a/app_chatgpt/models/ai_robot.py +++ b/app_chatgpt/models/ai_robot.py @@ -134,7 +134,7 @@ GPT-3 A set of models that can understand and generate natural language # hook,都正常 return False - def get_msg_files_content(self, message): + def get_msg_file_content(self, message): # hook return False diff --git a/app_chatgpt/models/discuss_channel.py b/app_chatgpt/models/discuss_channel.py index 9d39e4e7..6279db14 100644 --- a/app_chatgpt/models/discuss_channel.py +++ b/app_chatgpt/models/discuss_channel.py @@ -274,7 +274,7 @@ class Channel(models.Model): msg = _("Please warmly welcome our new partner %s and send him the best wishes.") % message.author_id.name else: # 不能用 preview, 如果用 : 提示词则 preview信息丢失 - plaintext_ct = tools.html_to_inner_content(message.body) + plaintext_ct = tools.mail.html_to_inner_content(message.body) msg = plaintext_ct.replace('@%s' % answer_id.name, '').lstrip() if not msg: @@ -323,19 +323,40 @@ class Channel(models.Model): if hasattr(channel, 'is_private') and channel.description: messages.append({"role": "system", "content": channel.description}) - if message.attachment_ids: - file_content = ai.get_msg_files_content(message) - if file_content: - messages.append({"role": "system", "content": file_content}) - try: # 处理提示词 - sys_content = channel.description + add_sys_content - messages.append({"role": "system", "content": sys_content}) + sys_content = '%s%s' % (channel.description if channel.description else "", add_sys_content if add_sys_content else "") + if len(sys_content): + messages.append({"role": "system", "content": sys_content}) c_history = self.get_openai_context(channel.id, author_id, answer_id, openapi_context_timeout, chat_count) if c_history: messages += c_history - messages.append({"role": "user", "content": msg}) + if message.attachment_ids: + attachment = message.attachment_ids[:1] + file_content = ai.get_msg_file_content(message) + if not file_content: + messages.append({"role": "user", "content": msg}) + if attachment.mimetype in ['image/jpeg', 'image/png', 'image/gif', 'image/bmp', 'image/webp']: + messages.append({ + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": file_content, + }, + }, + { + "type": "text", + "text": msg + } + ] + }) + else: + messages.append({"role": "system", "content": file_content}) + messages.append({"role": "user", "content": msg}) + else: + messages.append({"role": "user", "content": msg}) msg_len = sum(len(str(m)) for m in messages) # 接口最大接收 8430 Token # if msg_len * 2 > ai.max_send_char: @@ -359,7 +380,7 @@ class Channel(models.Model): else: self.get_ai_response(ai, messages, channel, user_id, message) except Exception as e: - raise UserError(_(e)) + raise UserError(e) return rdata diff --git a/app_chatgpt/views/discuss_channel_views.xml b/app_chatgpt/views/discuss_channel_views.xml index d0dd4f33..d83e5a10 100644 --- a/app_chatgpt/views/discuss_channel_views.xml +++ b/app_chatgpt/views/discuss_channel_views.xml @@ -32,9 +32,9 @@ - -