Merge branch 'master' of github.com:6vision/chatgpt-on-wechat

This commit is contained in:
6vision
2024-09-26 16:02:19 +08:00

View File

@@ -13,6 +13,7 @@ from bridge.context import ContextType, Context
from bridge.reply import Reply, ReplyType from bridge.reply import Reply, ReplyType
from common.log import logger from common.log import logger
from config import conf from config import conf
from bot.chatgpt.chat_gpt_session import ChatGPTSession
from bot.baidu.baidu_wenxin_session import BaiduWenxinSession from bot.baidu.baidu_wenxin_session import BaiduWenxinSession
from google.generativeai.types import HarmCategory, HarmBlockThreshold from google.generativeai.types import HarmCategory, HarmBlockThreshold
@@ -23,8 +24,8 @@ class GoogleGeminiBot(Bot):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.api_key = conf().get("gemini_api_key") self.api_key = conf().get("gemini_api_key")
# 复用文心的token计算方式 # 复用chatGPT的token计算方式
self.sessions = SessionManager(BaiduWenxinSession, model=conf().get("model") or "gpt-3.5-turbo") self.sessions = SessionManager(ChatGPTSession, model=conf().get("model") or "gpt-3.5-turbo")
self.model = conf().get("model") or "gemini-pro" self.model = conf().get("model") or "gemini-pro"
if self.model == "gemini": if self.model == "gemini":
self.model = "gemini-pro" self.model = "gemini-pro"
@@ -37,6 +38,7 @@ class GoogleGeminiBot(Bot):
session_id = context["session_id"] session_id = context["session_id"]
session = self.sessions.session_query(query, session_id) session = self.sessions.session_query(query, session_id)
gemini_messages = self._convert_to_gemini_messages(self.filter_messages(session.messages)) gemini_messages = self._convert_to_gemini_messages(self.filter_messages(session.messages))
logger.debug(f"[Gemini] messages={gemini_messages}")
genai.configure(api_key=self.api_key) genai.configure(api_key=self.api_key)
model = genai.GenerativeModel(self.model) model = genai.GenerativeModel(self.model)
@@ -81,6 +83,8 @@ class GoogleGeminiBot(Bot):
role = "user" role = "user"
elif msg.get("role") == "assistant": elif msg.get("role") == "assistant":
role = "model" role = "model"
elif msg.get("role") == "system":
role = "user"
else: else:
continue continue
res.append({ res.append({
@@ -97,7 +101,11 @@ class GoogleGeminiBot(Bot):
return res return res
for i in range(len(messages) - 1, -1, -1): for i in range(len(messages) - 1, -1, -1):
message = messages[i] message = messages[i]
if message.get("role") != turn: role = message.get("role")
if role == "system":
res.insert(0, message)
continue
if role != turn:
continue continue
res.insert(0, message) res.insert(0, message)
if turn == "user": if turn == "user":