| 
                        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
                        - import os
 - from typing import Optional
 - 
 - import langchain
 - from flask import Flask
 - from pydantic import BaseModel
 - 
 - 
 - class HostedOpenAI(BaseModel):
 -     api_base: str = None
 -     api_organization: str = None
 -     api_key: str
 -     quota_limit: int = 0
 -     """Quota limit for the openai hosted model. 0 means unlimited."""
 -     paid_enabled: bool = False
 -     paid_stripe_price_id: str = None
 -     paid_increase_quota: int = 1
 - 
 - 
 - class HostedAzureOpenAI(BaseModel):
 -     api_base: str
 -     api_key: str
 -     quota_limit: int = 0
 -     """Quota limit for the azure openai hosted model. 0 means unlimited."""
 - 
 - 
 - class HostedAnthropic(BaseModel):
 -     api_base: str = None
 -     api_key: str
 -     quota_limit: int = 0
 -     """Quota limit for the anthropic hosted model. 0 means unlimited."""
 -     paid_enabled: bool = False
 -     paid_stripe_price_id: str = None
 -     paid_increase_quota: int = 1000000
 -     paid_min_quantity: int = 20
 -     paid_max_quantity: int = 100
 - 
 - 
 - class HostedModelProviders(BaseModel):
 -     openai: Optional[HostedOpenAI] = None
 -     azure_openai: Optional[HostedAzureOpenAI] = None
 -     anthropic: Optional[HostedAnthropic] = None
 - 
 - 
 - hosted_model_providers = HostedModelProviders()
 - 
 - 
 - class HostedModerationConfig(BaseModel):
 -     enabled: bool = False
 -     providers: list[str] = []
 - 
 - 
 - class HostedConfig(BaseModel):
 -     moderation = HostedModerationConfig()
 - 
 - 
 - hosted_config = HostedConfig()
 - 
 - 
 - def init_app(app: Flask):
 -     if os.environ.get("DEBUG") and os.environ.get("DEBUG").lower() == 'true':
 -         langchain.verbose = True
 - 
 -     if app.config.get("HOSTED_OPENAI_ENABLED"):
 -         hosted_model_providers.openai = HostedOpenAI(
 -             api_base=app.config.get("HOSTED_OPENAI_API_BASE"),
 -             api_organization=app.config.get("HOSTED_OPENAI_API_ORGANIZATION"),
 -             api_key=app.config.get("HOSTED_OPENAI_API_KEY"),
 -             quota_limit=app.config.get("HOSTED_OPENAI_QUOTA_LIMIT"),
 -             paid_enabled=app.config.get("HOSTED_OPENAI_PAID_ENABLED"),
 -             paid_stripe_price_id=app.config.get("HOSTED_OPENAI_PAID_STRIPE_PRICE_ID"),
 -             paid_increase_quota=app.config.get("HOSTED_OPENAI_PAID_INCREASE_QUOTA"),
 -         )
 - 
 -     if app.config.get("HOSTED_AZURE_OPENAI_ENABLED"):
 -         hosted_model_providers.azure_openai = HostedAzureOpenAI(
 -             api_base=app.config.get("HOSTED_AZURE_OPENAI_API_BASE"),
 -             api_key=app.config.get("HOSTED_AZURE_OPENAI_API_KEY"),
 -             quota_limit=app.config.get("HOSTED_AZURE_OPENAI_QUOTA_LIMIT"),
 -         )
 - 
 -     if app.config.get("HOSTED_ANTHROPIC_ENABLED"):
 -         hosted_model_providers.anthropic = HostedAnthropic(
 -             api_base=app.config.get("HOSTED_ANTHROPIC_API_BASE"),
 -             api_key=app.config.get("HOSTED_ANTHROPIC_API_KEY"),
 -             quota_limit=app.config.get("HOSTED_ANTHROPIC_QUOTA_LIMIT"),
 -             paid_enabled=app.config.get("HOSTED_ANTHROPIC_PAID_ENABLED"),
 -             paid_stripe_price_id=app.config.get("HOSTED_ANTHROPIC_PAID_STRIPE_PRICE_ID"),
 -             paid_increase_quota=app.config.get("HOSTED_ANTHROPIC_PAID_INCREASE_QUOTA"),
 -             paid_min_quantity=app.config.get("HOSTED_ANTHROPIC_PAID_MIN_QUANTITY"),
 -             paid_max_quantity=app.config.get("HOSTED_ANTHROPIC_PAID_MAX_QUANTITY"),
 -         )
 - 
 -     if app.config.get("HOSTED_MODERATION_ENABLED") and app.config.get("HOSTED_MODERATION_PROVIDERS"):
 -         hosted_config.moderation = HostedModerationConfig(
 -             enabled=app.config.get("HOSTED_MODERATION_ENABLED"),
 -             providers=app.config.get("HOSTED_MODERATION_PROVIDERS").split(',')
 -         )
 
 
  |