File size: 1,430 Bytes
dcf6f0c
4bed6fd
b39f806
 
46152dd
21b7e19
feabab6
 
 
be64225
4bed6fd
b37eabc
21b7e19
dcf6f0c
5d92ad1
d8d8f1a
5d92ad1
dcf6f0c
 
 
34129b5
 
 
7bdd50b
5d92ad1
d8d8f1a
 
 
 
f74ef39
34129b5
dcf6f0c
6f672b2
 
ad63a1e
21b7e19
 
 
 
 
 
 
46152dd
1630497
46152dd
21b7e19
 
ad63a1e
21b7e19
 
 
 
 
46152dd
 
ad63a1e
4d5fcf9
feabab6
4d5fcf9
feabab6
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
import datetime
import json
import random

import streamlit as st
import openai
import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


def get_prompt():

    BIRTHYEAR = 1952
    BIRTHMONTH = 5
    OTHERBIRTHYEAR = 1984
    now = datetime.datetime.now()

    with open("context.json") as f:
        context = (
            json.load(f)["info"]
            .replace("[YEAR]", str(now.year))
            .replace("[TODAY]", f"{now:%d-%m-%Y}")
            .replace("[BIRTHYEAR]", str(BIRTHYEAR))
            .replace(
                "[AGE]",
                str((now - datetime.datetime(BIRTHYEAR, BIRTHMONTH, 1)).days // 365),
            )
            .replace("[OTHERAGE]", str(now.year - OTHERBIRTHYEAR))
        )

    prompt = f"""Ecco alcune informazioni su di me: '{context}' . 
    Rispondi alla domanda, rivolgendoti a me, usando la seconda persona singolare:
    Io: """

    return prompt


def get_answer(input):

    prompt = get_prompt()

    openai.api_key = st.secrets["OPENAI_API_KEY"]

    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=prompt + input + "\nTu: ",
        temperature=0,
        max_tokens=520,
        top_p=1.0,
        frequency_penalty=0.2,
        presence_penalty=0.0,
    )

    ans = response["choices"][0]["text"].replace("Tu: ", "").replace("?", " ").strip()

    logger.info(f"Q: {input} - A: {ans}")

    return ans