File: //opt/PraisonAI/bak.app.by
import os
import time
import logging
import chainlit as cl
# Unterdrücke OpenAI- und Tracing-Logs, indem du das Log-Level auf CRITICAL setzt
logging.getLogger("openai").setLevel(logging.CRITICAL)
logging.getLogger("openai.tracing").setLevel(logging.CRITICAL)
# === ENV SETUP, um zu verhindern, dass das SDK echte Trace-Calls absetzt ===
os.environ["OPENAI_API_KEY"] = "ollama" # Dummy-Key
os.environ["OPENAI_API_TYPE"] = "openai"
os.environ["OPENAI_SDK_TRACING"] = "false"
# Falls OpenTelemetry geladen ist, deaktiviere den aktuellen Tracing-Kontext
try:
from openai.tracing import trace_context
trace_context.set_current(None)
except ImportError:
pass
# === Lade Umgebungsvariablen ===
from dotenv import load_dotenv
load_dotenv(override=True)
OPENAI_MODEL_NAME = os.getenv("OPENAI_MODEL_NAME")
OPENAI_API_BASE = os.getenv("OPENAI_API_BASE")
print(f"OPENAI_MODEL_NAME: {OPENAI_MODEL_NAME}")
print(f"OPENAI_API_BASE: {OPENAI_API_BASE}")
# === Initialisiere den lokalen OpenAI-Client (Ollama) ===
from openai import AsyncOpenAI
ollama_client = AsyncOpenAI(
base_url=OPENAI_API_BASE, # z.B. http://localhost:11434/v1
api_key="ollama" # Ollama kümmert sich nicht um den Key
)
print("Using base URL:", ollama_client.base_url)
# === Agent-Setup ===
from agents import Agent, Runner, OpenAIChatCompletionsModel
model = OpenAIChatCompletionsModel(
model=OPENAI_MODEL_NAME,
openai_client=ollama_client
)
agent = Agent(
name="Assistant",
instructions="You are a helpful assistant",
model=model
)
# --- Chainlit UI Integration ---
@cl.on_chat_start
async def on_chat_start():
# Initiale Begrüßung beim Start der Unterhaltung
await cl.Message(content="Hallo! Frag mich etwas, oder gib mir einen Auftrag.").send()
@cl.on_message
async def main(message: str):
"""
Hier wird jede eingehende Chat-Nachricht verarbeitet.
Die Nachricht wird an den Agenten weitergereicht, und die Antwort wird zurückgesendet.
"""
start_time = time.time()
# Verwende die eingehende Nachricht als Prompt
prompt = message
result = Runner.run_sync(agent, prompt)
await cl.Message(content=result.final_output).send()
end_time = time.time()
runtime = f"Script runtime: {end_time - start_time:.2f} seconds"
await cl.Message(content=runtime).send()