import os import base64 from openai import OpenAI import gradio as gr from typing import Callable def get_fn(model_name: str, preprocess: Callable, postprocess: Callable, api_key: str): def fn(message, history): inputs = preprocess(message, history) client = OpenAI( base_url="https://fast-cloud-snova-ai-dev-0-api.cloud.snova.ai/v1", api_key=api_key, ) try: completion = client.chat.completions.create( model=model_name, messages=inputs["messages"], stream=True, ) response_text = "" for chunk in completion: delta = chunk.choices[0].delta.content or "" response_text += delta yield postprocess(response_text) except Exception as e: error_message = f"Error: {str(e)}" return error_message return fn