File size: 2,441 Bytes
68e9609
857d94b
c5d56ba
99ac7e3
68e9609
e338f7b
 
 
 
 
99ac7e3
e338f7b
 
 
 
 
d3811c5
9f3ddf9
8061c4b
 
 
 
 
 
 
 
e338f7b
8061c4b
 
e338f7b
857d94b
32a351c
857d94b
8061c4b
e338f7b
 
 
 
 
8061c4b
 
e338f7b
857d94b
8061c4b
857d94b
 
68e9609
99ac7e3
 
 
 
 
 
 
 
2db5787
99ac7e3
 
d305a6e
99ac7e3
380e45d
99ac7e3
 
 
 
 
 
 
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
import gradio as gr
import openai
import os
import random

from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

openai.api_key = os.getenv('OPENAI_API_KEY')
print(openai.api_key)
print (os.environ.get("OPENAI_API_KEY"))
client = openai.OpenAI(organization='org-eiNl8e4nk93VLQFDb4EBz9JG')
#openai.api_key = os.environ['openai']  #for huggingface i think

#generates an AI description of your character
def describe(names,wis,char,str,int,dex,con):
    print(f"hi{names}")
    
    prom=f"We're generating Dungeons and Dragons characters for a new campaign, and we need a brief character description, including race"
    prom+=f" and class. The character's name is {names} with the following stats: Wisdom: {wis},Charisma:{char},Strength:{str},"
    prom+=f"Intelligence:{int},Dexterity:{dex},Constitution:{con}. Describe the character, and then, separated by $$$ give us the "
    prom+=f"character's interesting backstory."

    completion = client.completions.create(
		model='gpt-3.5-turbo-instruct',
		prompt=prom,
		max_tokens=510,
		temperature=0.77,
		frequency_penalty=0.2,
		presence_penalty= 0.25)

    result =completion.choices[0].text
	#print(dict(completion).get('usage'))


	#print(completion.model_dump_json(indent=2))

    if not result :
        result = "Could you be any more boring?"
        

    return result
        
    

iface = gr.Interface(fn=describe, inputs=[gr.Textbox(label="Your DND character",show_label=True),
                                    gr.Number(label="Wisdom",show_label=True), 
                                    gr.Number(label="Charisma",show_label=True), 
                                    gr.Number(label="Strength",show_label=True), 
                                    gr.Number(label="Intelligence",show_label=True), 
                                    gr.Number(label="Dexterity",show_label=True), 
                                    gr.Number(label="Constitution",show_label=True)], 

            outputs=gr.Textbox(label="The character",show_label=True))
iface.launch()


def stat(n_dice, dice_rank):
    results = [  # Generate n_dice numbers between [1,dice_rank]
        random.randint(1, dice_rank)
        for n
        in range(n_dice)
    ]
    lowest = min(results)  # Find the lowest roll among the results
    results.remove(lowest)  # Remove the first instance of that lowest roll
    return sum(results)  # Return the sum of the remaining results.