Spaces:
Sleeping
Sleeping
| import os | |
| from dotenv import load_dotenv | |
| from langchain_openai import ChatOpenAI | |
| from langchain_core.messages import HumanMessage, AIMessage, SystemMessage | |
| load_dotenv() | |
| class TextSummarizer: | |
| def __init__(self, model="gpt-4o-mini-2024-07-18"): | |
| self.llm = ChatOpenAI(model=model) | |
| # Conversation Memory | |
| self.chat_history = [ | |
| SystemMessage( | |
| content=""" | |
| You are TextSum, an AI expert that summarizes text. | |
| Instructions: | |
| - If the user provides special instructions, follow them carefully. | |
| - Otherwise, summarize the text into 5-10 concise bullet points. | |
| """ | |
| ) | |
| ] | |
| def summarize(self, text: str) -> str: | |
| # Save user message | |
| self.chat_history.append( | |
| HumanMessage(content=text) | |
| ) | |
| # Send complete conversation history | |
| response = self.llm.invoke(self.chat_history) | |
| # Save AI response | |
| self.chat_history.append( | |
| AIMessage(content=response.content) | |
| ) | |
| return response.content | |
| def clear_memory(self): | |
| """ | |
| Optional: Reset conversation history | |
| """ | |
| self.chat_history = [ | |
| self.chat_history[0] # Keep SystemMessage | |
| ] | |
| # Reusable instance | |
| summarizer = TextSummarizer() | |
| def summarize_text(text: str) -> str: | |
| return summarizer.summarize(text) | |
| def main(): | |
| print("TextSum AI (type 'END' on a new line to submit, 'exit' to quit)\n") | |
| while True: | |
| print("You: ") | |
| lines = [] | |
| while True: | |
| line = input() | |
| if line.lower() == "exit": | |
| print("Goodbye!") | |
| return | |
| if line.strip() == "END": | |
| break | |
| lines.append(line) | |
| user_input = "\n".join(lines) | |
| if not user_input.strip(): | |
| continue | |
| result = summarize_text(user_input) | |
| print(f"\nAI:\n{result}\n") | |
| if __name__ == "__main__": | |
| main() |