File size: 2,094 Bytes
4f6da55
 
adeaf7b
 
 
9208045
adeaf7b
9208045
adeaf7b
 
 
 
e9a427a
adeaf7b
 
 
 
11dad38
adeaf7b
bd430d6
adeaf7b
 
bd430d6
adeaf7b
 
bd430d6
adeaf7b
 
bd430d6
adeaf7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9208045
adeaf7b
 
 
9208045
adeaf7b
 
 
 
 
 
 
9208045
 
 
adeaf7b
9208045
adeaf7b
 
 
 
 
9208045
adeaf7b
 
 
 
 
9208045
4f6da55
 
 
9208045
 
 
 
 
 
 
 
adeaf7b
9208045
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import json
import base64
import os
from google import genai
from google.genai import types
import gradio as gr

def generate(prompt):
    client = genai.Client(
        api_key=os.environ.get("GEMINI_API_KEY"),
    )

    model = "gemini-2.0-pro-exp-02-05"
    contents = [
        types.Content(
            role="user",
            parts=[
                types.Part.from_text(text=f"""prompt: {prompt}              
ordne den prompt in einer der folgenden kategorien

sitzungen
z.b. sitzungen von gemeinderäten,stadträdten,marktgemeinderäten, ausschüssen etc.

versammlungen
z.b. mitglieder- general-, jahreshauptversammlungen

ereignisse
z.b. sperrung einer straße

andere
wenn keiner der anderen kategorien passt
"""),
            ],
        ),
        types.Content(
            role="model",
            parts=[
                types.Part.from_text(text="""{
  \"kategorie\": \"sitzungen\"
}"""),
            ],
        ),
        types.Content(
            role="user",
            parts=[
                types.Part.from_text(text=prompt),
            ],
        ),
    ]

    generate_content_config = types.GenerateContentConfig(
        temperature=0.4,
        top_p=0.95,
        top_k=40,
        max_output_tokens=8192,
        response_mime_type="application/json",
        response_schema=genai.types.Schema(
            type=genai.types.Type.OBJECT,
            required=["kategorie"],
            properties={
                "kategorie": genai.types.Schema(
                    type=genai.types.Type.STRING,
                ),
            },
        ),
    )

    result = ""
    for chunk in client.models.generate_content_stream(
        model=model,
        contents=contents,
        config=generate_content_config,
    ):
        result += chunk.text
    json_data=json.loads(result)
    kategorie =json_data["kategorie"]
    return kategorie

iface = gr.Interface(
    fn=generate,
    inputs="text",
    outputs="text",
    title="Kategorie-Zuordnung",
    description="Ordnet einen gegebenen Prompt in eine der vorgegebenen Kategorien ein."
)

iface.launch()