genericrag / app.py
obaes's picture
Update app.py
8306e18 verified
raw
history blame
2.32 kB
import gradio as gr
import anthropic
import time
from pypdf import PdfReader
import os
#print(os.getenv('api_key'))
api_key = os.getenv('api_key')
username = os.getenv('username')
password = os.getenv('password')
def getfromclaude(contente,prompte):
client = anthropic.Anthropic(api_key=api_key)
tt = time.time()
#https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
response = client.beta.prompt_caching.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
system=[
{
"type": "text",
"text": "Vous êtes un assistant IA chargé d'analyser des œuvres. Votre objectif est de fournir des commentaires perspicaces sur les thèmes et réponses.\n",
},
{
"type": "text",
"text": ""+contente,
"cache_control": {"type": "ephemeral"}
}
],
messages=[{"role": "user", "content": ""+prompte}],
)
#print(response)
print(response.usage)
#print("time : "+ str(time.time()-tt))
return response.content[0].text
#def process2(prompte):
# return "fdsq"
def process2(ftext,prompte):
res= getfromclaude( ftext,prompte)
#print(res)
return res
# Fonction pour extraire le texte d'un PDF
def extract_text_from_pdf(pdf_file):
reader = PdfReader(pdf_file)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
# Interface Gradio
def process_pdf_and_query(pdf_file, prompte):
text =""
response = ""
if pdf_file is not None :
for i in pdf_file:
#print(i)
# Extraire le texte du PDF
text += extract_text_from_pdf(i)
response = process2(text,prompte)
return response
prompt = """ poses tes questions ici """
# Création de l'interface Gradio
iface = gr.Interface(
fn=process_pdf_and_query,
inputs=[
gr.File(file_count="multiple", label="Upload tes documents au format PDF"),
gr.Textbox(label="Poses tes questions", value=prompt)
],
outputs=gr.Textbox(label="Réponse"),
title="Assistant a l'analyse de documents",
description="Uploadez vos documents."
)
#iface.launch(share=True)
#iface.launch()
iface.launch(auth=(username, password))