MatteoScript commited on
Commit
4420602
·
verified ·
1 Parent(s): 12f17b8

Create settings_ai.py

Browse files
Files changed (1) hide show
  1. settings_ai.py +71 -0
settings_ai.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from google.ai.generativelanguage_v1beta.types import content
2
+ from typing import List, Optional
3
+ from pydantic import BaseModel, ValidationError
4
+ from dotenv import load_dotenv
5
+ load_dotenv()
6
+ import os
7
+
8
+ ENDPOINT_AZURE = os.getenv("ENDPOINT_AZURE")
9
+ API_AZURE = os.getenv("API_AZURE")
10
+ API_KEY_GEMINI = os.getenv("API_KEY_GEMINI")
11
+ NO_ARTICLE = "NESSUN_ARTICOLO_COMPATIBILE"
12
+ SYSTEM_INSTRUCTION = (
13
+ "Sei un esperto lettore di documenti. "
14
+ "Estrai il tutto il formato JSON come da schema fornito! "
15
+ "Mi raccomando compila tutti i campi! "
16
+ "Estra SOLO gli Articoli il cui codice inizia per 'AVE' o 'AV' o '3V' o '44'. Attenzione a quelli che iniziano per 'GEW 44..' sono da ESCLUDERE! "
17
+ "Nel campo 'TotaleNonIvato' inserisci il TOTALE MERCE per riga senza Iva: (Quantità * Prezzo Unitario) - Sconto. "
18
+ "Potrebbe non esserci lo 'Sconto' oppure potrebbe esserci direttamente il TOTALE MERCE per riga. "
19
+ "La 'Data' documento mettila in formato YYYY-MM-DD. "
20
+ "Attenzione, a volte ci sono articoli con DESCRIZIONE AVE ma con codice NON CORRISPONDENTE, devi escluderli! "
21
+ "Attenzione, a volte gli articoli AVE sono dentro la parentesi per esempio 'A789532 (AVE001)', qui l'articolo risulta COMPATIBILE perché ha AVE! "
22
+ "Attenzione, a volte i TOTALI hanno la formattazione con il punto (.) che rappresenta il SEPARATORE DELLE MIGLIAIA! Quindi 1.234,50 è 1234,50! "
23
+ f"Se non sono presenti articoli compatibili scrivi '{NO_ARTICLE}' nel codice articolo e metti 0 nel 'TotaleNonIvato'"
24
+ )
25
+
26
+ USER_MESSAGE = (
27
+ "Estrai i dati in formato JSON. "
28
+ )
29
+
30
+ class Articolo(BaseModel):
31
+ CodiceArticolo: str
32
+ DescrizioneArticolo: str
33
+ TotaleNonIvato: float
34
+ Verificato: Optional[int] = None
35
+
36
+ class Documento(BaseModel):
37
+ TipoDocumento: str
38
+ NumeroDocumento: str
39
+ Data: str
40
+ TotaleImponibile: float
41
+ Articoli: List[Articolo]
42
+
43
+ GENERATION_CONFIG = {
44
+ "temperature": 0.01,
45
+ "top_p": 0.1,
46
+ "top_k": 5,
47
+ "max_output_tokens": 500000,
48
+ "response_schema": content.Schema(
49
+ type=content.Type.OBJECT,
50
+ required=["TipoDocumento", "NumeroDocumento", "Data", "TotaleImponibile"],
51
+ properties={
52
+ "TipoDocumento": content.Schema(type=content.Type.STRING, enum=["FATTURA", "DDT"]),
53
+ "NumeroDocumento": content.Schema(type=content.Type.STRING),
54
+ "Data": content.Schema(type=content.Type.STRING),
55
+ "TotaleImponibile": content.Schema(type=content.Type.NUMBER),
56
+ "Articoli": content.Schema(
57
+ type=content.Type.ARRAY,
58
+ items=content.Schema(
59
+ type=content.Type.OBJECT,
60
+ required=["CodiceArticolo", "DescrizioneArticolo", "TotaleNonIvato"],
61
+ properties={
62
+ "CodiceArticolo": content.Schema(type=content.Type.STRING),
63
+ "DescrizioneArticolo": content.Schema(type=content.Type.STRING),
64
+ "TotaleNonIvato": content.Schema(type=content.Type.NUMBER),
65
+ },
66
+ ),
67
+ )
68
+ },
69
+ ),
70
+ "response_mime_type": "application/json",
71
+ }