Spaces:
Running
Running
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() | |