import io import requests import streamlit as st from openai import APIError, OpenAI from PIL import Image from .config import Config def txt2txt_generate(api_key, service, model, parameters, **kwargs): base_url = Config.SERVICES[service] if service == "Huggingface": base_url = f"{base_url}/{model}/v1" client = OpenAI(api_key=api_key, base_url=base_url) try: stream = client.chat.completions.create(stream=True, model=model, **parameters, **kwargs) return st.write_stream(stream) except APIError as e: return e.message except Exception as e: return str(e) def txt2img_generate(api_key, service, model, inputs, parameters, **kwargs): headers = { "Authorization": f"Bearer {api_key}", "X-Wait-For-Model": "true", "X-Use-Cache": "false", } base_url = f"{Config.SERVICES[service]}/{model}" try: response = requests.post( base_url, headers=headers, json={ "inputs": inputs, "parameters": {**parameters, **kwargs}, }, ) if response.status_code == 200: return Image.open(io.BytesIO(response.content)) else: return f"Error: {response.status_code} - {response.text}" except Exception as e: return str(e)