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 с такими полями Ты получаешь json с такими полями
{ {
chats: [ chats: [
"chat_id": integer "slice_id": UUID4
"messages": [ "messages": [
{ {
"user_id: integer, "user_id: integer,
@ -38,7 +38,7 @@ messages - это срез диалога в чате телеграмма.
success: [ success: [
{ {
"user_id": integer, "user_id": integer,
"chat_id": integer, "slice_id": integer,
"reason": string "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 from src.schemas import MessageFromChatSchema, BaseModelWithSerializeDatetime
class ChatMessageSchema(BaseModelWithSerializeDatetime): class ChatMessageSchema(BaseModelWithSerializeDatetime):
chat_id: int slice_id: UUID4
messages: list[MessageFromChatSchema] messages: list[MessageFromChatSchema]
@ -14,7 +14,7 @@ class FullRequestForGeminiSchema(BaseModelWithSerializeDatetime):
class SuccessChatFromAiSchema(BaseModelWithSerializeDatetime): class SuccessChatFromAiSchema(BaseModelWithSerializeDatetime):
user_id: PositiveInt | None user_id: PositiveInt | None
chat_id: NegativeInt | None slice_id: UUID4 | None
reason: str | None reason: str | None

View File

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

View File

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

View File

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