This commit is contained in:
harold 2025-02-08 20:43:08 +05:00
parent 143ad8ebac
commit 6d8591eeb1
6 changed files with 25 additions and 10 deletions

View File

@ -1,3 +1,3 @@
GEMINI_TOKENS_LIMIT: int = 10_000
GEMINI_TOKENS_LIMIT: int = 3_000

View File

@ -7,7 +7,7 @@ ANALYTIC_PROMT = """
Ты получаешь json с такими полями
{
chats: [
"chat_id": integer
"slice_id": UUID4
"messages": [
{
"user_id: integer,
@ -38,7 +38,7 @@ messages - это срез диалога в чате телеграмма.
success: [
{
"user_id": integer,
"chat_id": integer,
"slice_id": integer,
"reason": string
}
]

View File

@ -1,10 +1,10 @@
from pydantic import BaseModel, PositiveInt, NegativeInt
from pydantic import UUID4, PositiveInt, NegativeInt
from src.schemas import MessageFromChatSchema, BaseModelWithSerializeDatetime
class ChatMessageSchema(BaseModelWithSerializeDatetime):
chat_id: int
slice_id: UUID4
messages: list[MessageFromChatSchema]
@ -14,7 +14,7 @@ class FullRequestForGeminiSchema(BaseModelWithSerializeDatetime):
class SuccessChatFromAiSchema(BaseModelWithSerializeDatetime):
user_id: PositiveInt | None
chat_id: NegativeInt | None
slice_id: UUID4 | None
reason: str | None

View File

@ -1,6 +1,7 @@
from faststream.rabbit import RabbitBroker, RabbitExchange, ExchangeType, RabbitQueue
from src.gemini_sdk.schemas import ResponseFromGeminiSchema
url = "amqp://test:test@localhost:9072/"
@ -19,6 +20,9 @@ base_exchange = RabbitExchange(
base_queue = RabbitQueue(
name="base_queue",
)
success_queue = RabbitQueue(
name="success_queue",
)
message_subscriber = broker.subscriber(
@ -26,7 +30,15 @@ message_subscriber = broker.subscriber(
exchange=base_exchange,
)
success_publisher = broker.publisher(
queue=success_queue,
exchange=base_exchange,
schema=ResponseFromGeminiSchema,
)
async def init_queue_and_publisher():
await broker.declare_exchange(base_exchange)
await broker.declare_queue(base_queue)
await broker.declare_queue(success_queue)

View File

@ -32,4 +32,5 @@ class MessageFromChatSchema(BaseModelWithSerializeDatetime):
class MessagesForSendToWorkersSchema(BaseModelWithSerializeDatetime):
slice_id: UUID4
messages: list[MessageFromChatSchema]

View File

@ -1,7 +1,8 @@
from time import sleep
from src.gemini_sdk.schemas import ChatMessageSchema
from src.gemini_sdk.schemas import ChatMessageSchema, ResponseFromGeminiSchema
from src.gemini_sdk.service import gemini_helper
from src.rmq.connect import success_publisher
from src.schemas import MessagesForSendToWorkersSchema
from src.service.limter_checker import check_current_token_limit
from src.service.storage import MESSAGES_STORAGE_SCHEMA
@ -9,9 +10,9 @@ from src.service.storage import MESSAGES_STORAGE_SCHEMA
async def handle_message_service(
message_from_rmq: MessagesForSendToWorkersSchema,
):
) -> ResponseFromGeminiSchema | None:
chat_message_schema = ChatMessageSchema(
chat_id=message_from_rmq.messages[0].chat_id,
slice_id=message_from_rmq.slice_id,
messages=message_from_rmq.messages
)
MESSAGES_STORAGE_SCHEMA.chats.append(chat_message_schema)
@ -24,9 +25,10 @@ async def handle_message_service(
result = gemini_helper.create_request_ai(
messages=MESSAGES_STORAGE_SCHEMA
)
print(result)
sleep(60)
MESSAGES_STORAGE_SCHEMA.chats = []
if result.success is not None:
await success_publisher.publish(result)