claude_caching / app.py
formix
init
12377a0
raw
history blame
1.97 kB
import gradio as gr
import anthropic
from anthropic.types import ContentBlock
from time import time
client = anthropic.Anthropic()
# Read file content into a string
with open("full_text.txt", "r") as file:
text = file.read()
def claude_conversation(message, history):
# Prepare the conversation history
messages = []
for human, assistant in history:
if human.strip(): # Only add non-empty human messages
messages.append({"role": "user", "content": human})
if assistant.strip(): # Only add non-empty assistant messages
messages.append({"role": "assistant", "content": assistant})
# Add the new message if it's not empty
if message.strip():
messages.append({"role": "user", "content": message})
else:
return "Please enter a non-empty message."
try:
# Make the API call
start = time ()
response = client.beta.prompt_caching.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
system=[
{
"type": "text",
"text": "You are an AI assistant tasked with analyzing legal documents."
},
{
"type": "text",
"text": text,
"cache_control": {"type": "ephemeral"}
}
],
messages=messages
)
# Extract and return Claude's response
print (response)
end = time ()
print(f"Elapsed time: {end - start} seconds")
return response.content[0].text
except anthropic.APIError as e:
return f"An error occurred: {str(e)}"
# Create the Gradio interface
demo = gr.ChatInterface(
fn=claude_conversation,
title="Claude Legal Document Analyzer",
description="Ask questions about the legal document loaded from 'mainarbeit.txt'."
)
# Launch the app
demo.launch()