Spaces:
Running
Running
| import asyncio | |
| import streamlit as st | |
| from pydantic_ai import Agent | |
| from pydantic_ai.models.groq import GroqModel | |
| import nest_asyncio | |
| import pdfplumber | |
| import os | |
| api_key = os.getenv("API_KEY") | |
| data = [] | |
| #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 | |
| model = GroqModel('llama-3.1-70b-versatile', api_key = api_key) | |
| def split_long_string(long_string, chunk_size=6000): | |
| return [long_string[i:i+chunk_size] for i in range(0, len(long_string), chunk_size)] | |
| async def ppt_content(data): | |
| agent = Agent(model,system_prompt=( | |
| "You are an expert in making power-point perssentation", | |
| "Title Slide: Include the document's title, subtitle, author, and date.", | |
| "Methodology Slide: Summarize the methodology in detail in bullet points", | |
| "Results Slide: Present key findings in detail in simple text and bullet points.", | |
| "Discussion Slide: Summarize the implications and limitations.", | |
| "Conclusion Slide: State the overall conclusion.", | |
| "Reference Slide: Include all citations used." | |
| )) | |
| listOfString = split_long_string("".join(data)) | |
| print(len(listOfString)) | |
| result_1 = agent.run_sync(user_prompt = listOfString[0]) | |
| result_2 = agent.run_sync(user_prompt = listOfString[1],message_history=result_1.new_messages()) | |
| print(result_2.data) | |
| def ai_ppt(data): | |
| asyncio.run(ppt_content(data=data)) | |
| def extract_data(feed): | |
| with pdfplumber.open(feed) as pdf: | |
| pages = pdf.pages | |
| for p in pages: | |
| data.append(p.extract_text()) | |
| return None | |
| # if data is not None: | |
| # st.caption(data) | |
| # ai_ppt(data=data) | |
| def main(): | |
| uploaded_file = st.file_uploader('Choose your .pdf file', type="pdf") | |
| if uploaded_file is not None: | |
| extract_data(uploaded_file) | |
| if st.button("Search"): | |
| ai_ppt(data) | |
| if __name__ == '__main__': | |
| import asyncio | |
| nest_asyncio.apply() | |
| main() | |