File size: 2,335 Bytes
7abe6e1
ccbcbae
7abe6e1
 
 
 
adbeb82
 
332de37
6b17270
53b4b86
342d78c
b34c465
50a12bf
 
6b17270
 
7abe6e1
555ef07
 
 
 
7abe6e1
 
f9bc4fc
56e913b
ef6a2a0
adbeb82
342d78c
adbeb82
e207b76
370c03f
ef6a2a0
74524a2
 
 
 
 
f85c8ad
 
 
 
53b4b86
f85c8ad
53b4b86
 
 
74524a2
 
13b6f87
74524a2
 
13b6f87
ef6a2a0
74524a2
ef6a2a0
709bce3
13b6f87
ef6a2a0
370c03f
af7cd6b
7abe6e1
5da1cee
f85c8ad
dfa34b3
7abe6e1
2d34c43
370c03f
801487f
04e5ddd
9468ae4
dfa34b3
2d34c43
7abe6e1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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"]

config = {
    "max_tokens": 1000,
    "model": "anthropic.claude-3-opus-20240229-v1:0",
    "temperature": 0,
    "top_k": 250,
    "top_p": 0.999,
}

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 invoke(prompt):
    if not prompt:
        raise gr.Error("Prompt is required.")

    raise gr.Error("Please clone and bring your own credentials.")
    
    completion = ""
    
    try:
        body = {
            "anthropic_version": "bedrock-2023-05-31",
            "messages": [
                {"role": "user", "content": [{"type": "text", "text": prompt}]},
            ],
            "system": "You are a honest, helpful, and harmless bot."
        }
        model_id = config["model"]
        model_kwargs =  { 
            "max_tokens": config["max_tokens"],
            "stop_sequences": ["\n\nHuman"],
            "temperature": config["temperature"],
            "top_k": config["top_k"],
            "top_p": config["top_p"]
        }
        body.update(model_kwargs)
        
        response = bedrock_runtime.invoke_model(modelId=model_id,
                                                body=json.dumps(body))
        
        response_body = json.loads(response.get("body").read())
        completion = response_body.get("content", [])[0].get("text", "")
    except Exception as e:
        completion = e
        
        raise gr.Error(e)
    
    return completion

description = """<a href='https://www.gradio.app/'>Gradio</a> UI using the <a href='https://aws.amazon.com/bedrock/'>Amazon Bedrock</a> SDK 
                 with <a href='https://www.anthropic.com/'>Anthropic</a> Claude 3 model."""

gr.close_all()

demo = gr.Interface(fn = invoke, 
                    inputs = [gr.Textbox(label = "Prompt", value = "hi", lines = 1)],
                    outputs = [gr.Textbox(label = "Completion", lines = 1)],
                    title = "Generative AI - LLM",
                    description = description)

demo.launch()