hosted.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. 0 means unlimited."""
  12. paid_enabled: bool = False
  13. paid_stripe_price_id: str = None
  14. paid_increase_quota: int = 1
  15. class HostedAzureOpenAI(BaseModel):
  16. api_base: str
  17. api_key: str
  18. quota_limit: int = 0
  19. """Quota limit for the azure openai hosted model. 0 means unlimited."""
  20. class HostedAnthropic(BaseModel):
  21. api_base: str = None
  22. api_key: str
  23. quota_limit: int = 0
  24. """Quota limit for the anthropic hosted model. 0 means unlimited."""
  25. paid_enabled: bool = False
  26. paid_stripe_price_id: str = None
  27. paid_increase_quota: int = 1000000
  28. paid_min_quantity: int = 20
  29. paid_max_quantity: int = 100
  30. class HostedModelProviders(BaseModel):
  31. openai: Optional[HostedOpenAI] = None
  32. azure_openai: Optional[HostedAzureOpenAI] = None
  33. anthropic: Optional[HostedAnthropic] = None
  34. hosted_model_providers = HostedModelProviders()
  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. paid_stripe_price_id=app.config.get("HOSTED_OPENAI_PAID_STRIPE_PRICE_ID"),
  46. paid_increase_quota=app.config.get("HOSTED_OPENAI_PAID_INCREASE_QUOTA"),
  47. )
  48. if app.config.get("HOSTED_AZURE_OPENAI_ENABLED"):
  49. hosted_model_providers.azure_openai = HostedAzureOpenAI(
  50. api_base=app.config.get("HOSTED_AZURE_OPENAI_API_BASE"),
  51. api_key=app.config.get("HOSTED_AZURE_OPENAI_API_KEY"),
  52. quota_limit=app.config.get("HOSTED_AZURE_OPENAI_QUOTA_LIMIT"),
  53. )
  54. if app.config.get("HOSTED_ANTHROPIC_ENABLED"):
  55. hosted_model_providers.anthropic = HostedAnthropic(
  56. api_base=app.config.get("HOSTED_ANTHROPIC_API_BASE"),
  57. api_key=app.config.get("HOSTED_ANTHROPIC_API_KEY"),
  58. quota_limit=app.config.get("HOSTED_ANTHROPIC_QUOTA_LIMIT"),
  59. paid_enabled=app.config.get("HOSTED_ANTHROPIC_PAID_ENABLED"),
  60. paid_stripe_price_id=app.config.get("HOSTED_ANTHROPIC_PAID_STRIPE_PRICE_ID"),
  61. paid_increase_quota=app.config.get("HOSTED_ANTHROPIC_PAID_INCREASE_QUOTA"),
  62. paid_min_quantity=app.config.get("HOSTED_ANTHROPIC_PAID_MIN_QUANTITY"),
  63. paid_max_quantity=app.config.get("HOSTED_ANTHROPIC_PAID_MAX_QUANTITY"),
  64. )