hosted.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import os
  2. from typing import Optional
  3. import langchain
  4. from flask import Flask
  5. from pydantic import BaseModel
  6. class HostedOpenAI(BaseModel):
  7. api_base: str = None
  8. api_organization: str = None
  9. api_key: str
  10. quota_limit: int = 0
  11. """Quota limit for the openai hosted model. -1 means unlimited."""
  12. paid_enabled: bool = False
  13. class HostedAzureOpenAI(BaseModel):
  14. api_base: str
  15. api_key: str
  16. quota_limit: int = 0
  17. """Quota limit for the azure openai hosted model. -1 means unlimited."""
  18. class HostedAnthropic(BaseModel):
  19. api_base: str = None
  20. api_key: str
  21. quota_limit: int = 0
  22. """Quota limit for the anthropic hosted model. -1 means unlimited."""
  23. paid_enabled: bool = False
  24. class HostedModelProviders(BaseModel):
  25. openai: Optional[HostedOpenAI] = None
  26. azure_openai: Optional[HostedAzureOpenAI] = None
  27. anthropic: Optional[HostedAnthropic] = None
  28. hosted_model_providers = HostedModelProviders()
  29. class HostedModerationConfig(BaseModel):
  30. enabled: bool = False
  31. providers: list[str] = []
  32. class HostedConfig(BaseModel):
  33. moderation = HostedModerationConfig()
  34. hosted_config = HostedConfig()
  35. def init_app(app: Flask):
  36. if os.environ.get("DEBUG") and os.environ.get("DEBUG").lower() == 'true':
  37. langchain.verbose = True
  38. if app.config.get("HOSTED_OPENAI_ENABLED"):
  39. hosted_model_providers.openai = HostedOpenAI(
  40. api_base=app.config.get("HOSTED_OPENAI_API_BASE"),
  41. api_organization=app.config.get("HOSTED_OPENAI_API_ORGANIZATION"),
  42. api_key=app.config.get("HOSTED_OPENAI_API_KEY"),
  43. quota_limit=app.config.get("HOSTED_OPENAI_QUOTA_LIMIT"),
  44. paid_enabled=app.config.get("HOSTED_OPENAI_PAID_ENABLED"),
  45. )
  46. if app.config.get("HOSTED_AZURE_OPENAI_ENABLED"):
  47. hosted_model_providers.azure_openai = HostedAzureOpenAI(
  48. api_base=app.config.get("HOSTED_AZURE_OPENAI_API_BASE"),
  49. api_key=app.config.get("HOSTED_AZURE_OPENAI_API_KEY"),
  50. quota_limit=app.config.get("HOSTED_AZURE_OPENAI_QUOTA_LIMIT"),
  51. )
  52. if app.config.get("HOSTED_ANTHROPIC_ENABLED"):
  53. hosted_model_providers.anthropic = HostedAnthropic(
  54. api_base=app.config.get("HOSTED_ANTHROPIC_API_BASE"),
  55. api_key=app.config.get("HOSTED_ANTHROPIC_API_KEY"),
  56. quota_limit=app.config.get("HOSTED_ANTHROPIC_QUOTA_LIMIT"),
  57. paid_enabled=app.config.get("HOSTED_ANTHROPIC_PAID_ENABLED"),
  58. )
  59. if app.config.get("HOSTED_MODERATION_ENABLED") and app.config.get("HOSTED_MODERATION_PROVIDERS"):
  60. hosted_config.moderation = HostedModerationConfig(
  61. enabled=app.config.get("HOSTED_MODERATION_ENABLED"),
  62. providers=app.config.get("HOSTED_MODERATION_PROVIDERS").split(',')
  63. )