SemanticRouting / app.py
mgokg's picture
Update app.py
4f6da55 verified
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()