File size: 2,334 Bytes
7abe6e1
ccbcbae
7abe6e1
 
 
 
adbeb82
 
332de37
6b17270
90397f3
df78852
b34c465
50a12bf
 
6b17270
 
7abe6e1
555ef07
 
 
 
7abe6e1
 
f9bc4fc
ef6a2a0
 
adbeb82
a337d72
adbeb82
e207b76
370c03f
ef6a2a0
370c03f
ef6a2a0
 
 
 
52d9836
ef6a2a0
 
 
13b6f87
 
 
 
 
 
ef6a2a0
 
 
709bce3
13b6f87
ef6a2a0
370c03f
af7cd6b
7abe6e1
e4a070f
df78852
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
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_to_sample": 1000,
    "model": "anthropic.claude-v2",
    "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 (prompt == ""):
        raise gr.Error("Prompt is required.")

    raise gr.Error("Clone and bring your own credentials.")
    
    completion = ""
    
    try:
        body = json.dumps({"prompt": "Human: " + prompt + "Assistant: ",
                           "max_tokens_to_sample": config["max_tokens_to_sample"],
                           "temperature": config["temperature"],
                           "top_k": config["top_k"],
                           "top_p": config["top_p"],
                           "stop_sequences": ["Human: "]})
        modelId = config["model"]
        accept = "application/json"
        contentType = "application/json"
        
        response = bedrock_runtime.invoke_model(body = body, 
                                                modelId = modelId, 
                                                accept = accept, 
                                                contentType = contentType)
        
        response_body = json.loads(response.get("body").read())
        completion = response_body["completion"]
    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> API 
                 with <a href='https://www.anthropic.com/'>Anthropic</a> Claude 2 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()