@@ -227,21 +227,21 @@ class Chatgpt(SimpleService): elif file: human_messages = [] chunk_responses = ['Содержание файла: '] - for chunk in chunks: - prompt = [ - { - 'type': 'text', - 'text': f'Сгенерируй 2-3 предложения, которые суммирует следующий текст. ' - f'Включи основную мысль текста и все значимые числовые данные. Текст: {chunk}', - } - ] - human_message = HumanMessage(content=prompt) - human_messages.append(human_message) - response = conversation.invoke( - {'input': human_message.content[0]['text']}, - config={'configurable': {'session_id': 'default'}}, - ) - chunk_responses.append(response.content) + if len(chunks) > 1: + for chunk in chunks: + prompt = [ + { + 'type': 'text', + 'text': f'Сгенерируй 2-3 предложения, которые суммирует следующий текст. ' + f'Включи основную мысль текста и все значимые числовые данные. Текст: {chunk}', + } + ] + human_message = HumanMessage(content=prompt) + human_messages.append(human_message) + response = self.llm.invoke([human_message]) + chunk_responses.append(response.content) + else: + chunk_responses.append(chunks[0].content) combined_summary = ' '.join(chunk_responses) user_prompt = input_message.content if input_message.content.split() else 'Суммируй текст' question_content = ( @@ -471,7 +471,7 @@ class Chatgpt(SimpleService): return 'Файл пуст или содержит изображения, из которых невозможно извлечь текст.' def split_text_to_chunks( - self, raw_text: str, chunk_size: int = 100_000, overlap: int = 300 + self, raw_text: str, chunk_size: int = 80_000, overlap: int = 300 ) -> list[HumanMessage]: """ Splitting file raw text to chunks @@ -1,3 +1,4 @@ +ОТВЕЧАЙ СТРОГО ПО ШАБЛОНУ! # [GOAL] # Твоя задача — создать детализированное, но краткое структурированное содержание предоставленного текста рыночного исследования. Выступай в роли аналитика, подготавливающего выжимку, богатую ключевыми данными, для быстрого обзора и оценки.