import asyncio from pydantic_ai.result import ResultData, RunResult import streamlit as st from pydantic_ai import Agent from pydantic_ai.models.groq import GroqModel import nest_asyncio import pdfplumber import os import presentation as customClass api_key = os.getenv("API_KEY") data = [] 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, #result_type=customClass.PPT, system_prompt=( "You are an expert in making power-point perssentation", "Create 6 sliders", "Each slide should be seperate" "Title Slide: Include the document's title, subtitle, author, and date.", "Methodology Slide: Summarize the methodology in detail", "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)) # for x in listOfString: # result: RunResult[str] = RunResult(_all_messages:[]) # result = agent.run_sync(user_prompt = x,message_history = result.new_messages()) 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()