新增自定义日志模块,替换全局logging实现;优化日志输出格式与颜色支持

This commit is contained in:
yinpeng
2024-12-16 16:20:53 +08:00
parent 829c1b02ec
commit 56a069dbac
10 changed files with 131 additions and 24 deletions
+10 -5
View File
@@ -2,12 +2,12 @@ import httpx
import json
import time
import uuid
import logging
from typing import Dict, Any, Optional, AsyncGenerator, Union
import openai
from app.core.config import settings
from app.core.logger import get_chat_logger
logger = logging.getLogger(__name__)
logger = get_chat_logger()
class ChatService:
@@ -170,6 +170,9 @@ class ChatService:
gemini_model = model
gemini_messages = self.convert_messages_to_gemini_format(messages)
if not stream:
# 非流式模式下,移除代码执行工具
tools.remove({"code_execution": {}})
payload = {
"contents": gemini_messages,
"generationConfig": {"temperature": temperature},
@@ -241,7 +244,9 @@ class ChatService:
url = f"https://generativelanguage.googleapis.com/v1beta/models/{gemini_model}:generateContent?key={api_key}"
response = await client.post(url, json=payload)
if response.status_code != 200:
raise Exception(f"API error: {response.status_code}")
error_text = response.text
error_code = response.status_code
raise Exception(f"API调用错误 - 状态码: {error_code}, 响应内容: {error_text}")
gemini_response = response.json()
return self.convert_gemini_response_to_openai(gemini_response, model, finish_reason="stop")
except Exception as e:
@@ -287,10 +292,10 @@ class ChatService:
language = code_data.get("language", "").lower()
code = code_data.get("code", "").strip()
return f"""\n```{language}\n{code}\n```\n"""
return f"""\n【代码执行】\n```{language}\n{code}\n```\n"""
def format_execution_result(self, result_data: dict) -> str:
"""格式化执行结果输出"""
outcome = result_data.get("outcome", "")
output = result_data.get("output", "").strip()
return f"""\n【执行结果】\noutcome: {outcome}\noutput: {output}\n"""
return f"""\n【执行结果】\noutcome: {outcome}\noutput:\n```{output}```\n"""
+2 -2
View File
@@ -1,8 +1,8 @@
import logging
import openai
from typing import Union, List, Dict, Any
from app.core.logger import get_embeddings_logger
logger = logging.getLogger(__name__)
logger = get_embeddings_logger()
class EmbeddingService:
+3 -3
View File
@@ -1,9 +1,9 @@
import asyncio
from itertools import cycle
import logging
from typing import Dict
from app.core.logger import get_key_manager_logger
logger = logging.getLogger(__name__)
logger = get_key_manager_logger()
class KeyManager:
@@ -42,7 +42,7 @@ class KeyManager:
current_key = await self.get_next_key()
if current_key == initial_key:
await self.reset_failure_counts()
# await self.reset_failure_counts() 取消重置
return current_key
async def handle_api_failure(self, api_key: str) -> str:
+2 -2
View File
@@ -1,9 +1,9 @@
import requests
from datetime import datetime, timezone
from typing import Optional, Dict, Any
import logging
from app.core.logger import get_model_logger
logger = logging.getLogger(__name__)
logger = get_model_logger()
class ModelService: