import gradio as gr
import boto3, json, os
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
aws_access_key_id = os.environ['AWS_ACCESS_KEY_ID']
aws_secret_access_key = os.environ['AWS_SECRET_ACCESS_KEY']
bedrock_runtime = boto3.client(
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
service_name="bedrock-runtime",
region_name="us-west-2"
)
def complete(prompt):
args = {
"modelId": "anthropic.claude-v2",
"contentType": "application/json",
"accept": "*/*",
"body": "{\"prompt\":\"Human: " + prompt + "\\nAssistant:\",\"max_tokens_to_sample\":300,\"temperature\":1,\"top_k\":250,\"top_p\":0.999,\"stop_sequences\":[\"\\n\\nHuman:\"],\"anthropic_version\":\"bedrock-2023-05-31\"}"
}
response = bedrock_runtime.invoke_model(**args)
response_body = json.loads(response.get("body").read())
return response_body['completion']
gr.close_all()
demo = gr.Interface(fn=complete,
inputs=[gr.Textbox(label="Prompt", lines=1)],
outputs=[gr.Textbox(label="Completion", lines=1)],
title="Generative AI with LLM",
description="Gradio UI using Amazon Bedrock API with Claude 2 LLM")
demo.launch()