File size: 1,540 Bytes
dcf6f0c
4bed6fd
b39f806
 
46152dd
21b7e19
feabab6
 
 
be64225
4bed6fd
b37eabc
21b7e19
dcf6f0c
5d92ad1
d8d8f1a
5d92ad1
dcf6f0c
 
 
34129b5
 
 
7bdd50b
5d92ad1
d8d8f1a
 
 
 
f74ef39
34129b5
dcf6f0c
90ae5a7
21b7e19
 
 
 
 
 
 
 
46152dd
1630497
46152dd
21b7e19
 
 
 
 
 
 
 
46152dd
 
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
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"""Sono amnesico, ecco alcune informazioni su di me: '{context}' . Purtroppo non riesco a ricordarle da solo. Ora dunque ti farò delle domande, e voglio che tu mi fornisca le risposte, in maniera concisa. Cerca di usare la seconda persona singolare nelle risposte.
    Domanda:"""

    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,
        temperature=0,
        max_tokens=520,
        top_p=1.0,
        frequency_penalty=0.2,
        presence_penalty=0.0,
    )

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

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

    return ans