DeepInfraChat.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. from __future__ import annotations
  2. import random
  3. from .template import OpenaiTemplate
  4. from ..errors import ModelNotFoundError
  5. from .. import debug
  6. class DeepInfraChat(OpenaiTemplate):
  7. parent = "DeepInfra"
  8. url = "https://deepinfra.com/chat"
  9. login_url = "https://deepinfra.com/dash/api_keys"
  10. api_base = "https://api.deepinfra.com/v1/openai"
  11. api_endpoint = "https://api.deepinfra.com/v1/openai/chat/completions"
  12. working = True
  13. default_model = 'deepseek-ai/DeepSeek-V3-0324'
  14. default_vision_model = 'microsoft/Phi-4-multimodal-instruct'
  15. vision_models = [
  16. default_vision_model,
  17. 'meta-llama/Llama-3.2-90B-Vision-Instruct'
  18. ]
  19. models = [
  20. # cognitivecomputations
  21. 'cognitivecomputations/dolphin-2.6-mixtral-8x7b',
  22. 'cognitivecomputations/dolphin-2.9.1-llama-3-70b',
  23. # deepinfra
  24. 'deepinfra/airoboros-70b',
  25. # deepseek-ai
  26. default_model,
  27. 'deepseek-ai/DeepSeek-V3-0324-Turbo',
  28. 'deepseek-ai/DeepSeek-R1-0528-Turbo',
  29. 'deepseek-ai/DeepSeek-R1-0528',
  30. 'deepseek-ai/DeepSeek-Prover-V2-671B',
  31. 'deepseek-ai/DeepSeek-V3',
  32. 'deepseek-ai/DeepSeek-R1',
  33. 'deepseek-ai/DeepSeek-R1-Turbo',
  34. 'deepseek-ai/DeepSeek-R1-Distill-Llama-70B',
  35. 'deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
  36. # google (gemma)
  37. 'google/gemma-1.1-7b-it',
  38. 'google/gemma-2-9b-it',
  39. 'google/gemma-2-27b-it',
  40. 'google/gemma-3-4b-it',
  41. 'google/gemma-3-12b-it',
  42. 'google/gemma-3-27b-it',
  43. # google (codegemma)
  44. 'google/codegemma-7b-it',
  45. # lizpreciatior
  46. 'lizpreciatior/lzlv_70b_fp16_hf',
  47. # meta-llama
  48. 'meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8',
  49. 'meta-llama/Llama-4-Scout-17B-16E-Instruct',
  50. 'meta-llama/Meta-Llama-3.1-8B-Instruct',
  51. 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
  52. 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo',
  53. # microsoft
  54. 'microsoft/phi-4-reasoning-plus',
  55. 'microsoft/phi-4',
  56. 'microsoft/WizardLM-2-8x22B',
  57. 'microsoft/WizardLM-2-7B',
  58. # mistralai
  59. 'mistralai/Mistral-Small-3.1-24B-Instruct-2503',
  60. # Qwen
  61. 'Qwen/Qwen3-235B-A22B',
  62. 'Qwen/Qwen3-30B-A3B',
  63. 'Qwen/Qwen3-32B',
  64. 'Qwen/Qwen3-14B',
  65. 'Qwen/QwQ-32B',
  66. ] + vision_models
  67. model_aliases = {
  68. # cognitivecomputations
  69. "dolphin-2.6": "cognitivecomputations/dolphin-2.6-mixtral-8x7b",
  70. "dolphin-2.9": "cognitivecomputations/dolphin-2.9.1-llama-3-70b",
  71. # deepinfra
  72. "airoboros-70b": "deepinfra/airoboros-70b",
  73. # deepseek-ai
  74. "deepseek-prover-v2": "deepseek-ai/DeepSeek-Prover-V2-671B",
  75. "deepseek-prover-v2-671b": "deepseek-ai/DeepSeek-Prover-V2-671B",
  76. "deepseek-r1": ["deepseek-ai/DeepSeek-R1", "deepseek-ai/DeepSeek-R1-0528"],
  77. "deepseek-r1-0528": "deepseek-ai/DeepSeek-R1-0528",
  78. "deepseek-r1-0528-turbo": "deepseek-ai/DeepSeek-R1-0528-Turbo",
  79. "deepseek-r1-distill-llama-70b": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
  80. "deepseek-r1-distill-qwen-32b": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
  81. "deepseek-r1-turbo": "deepseek-ai/DeepSeek-R1-Turbo",
  82. "deepseek-v3": ["deepseek-ai/DeepSeek-V3", "deepseek-ai/DeepSeek-V3-0324"],
  83. "deepseek-v3-0324": "deepseek-ai/DeepSeek-V3-0324",
  84. "deepseek-v3-0324-turbo": "deepseek-ai/DeepSeek-V3-0324-Turbo",
  85. # google
  86. "codegemma-7b": "google/codegemma-7b-it",
  87. "gemma-1.1-7b": "google/gemma-1.1-7b-it",
  88. "gemma-2-27b": "google/gemma-2-27b-it",
  89. "gemma-2-9b": "google/gemma-2-9b-it",
  90. "gemma-3-4b": "google/gemma-3-4b-it",
  91. "gemma-3-12b": "google/gemma-3-12b-it",
  92. "gemma-3-27b": "google/gemma-3-27b-it",
  93. # lizpreciatior
  94. "lzlv-70b": "lizpreciatior/lzlv_70b_fp16_hf",
  95. # meta-llama
  96. "llama-3.1-8b": "meta-llama/Meta-Llama-3.1-8B-Instruct",
  97. "llama-3.2-90b": "meta-llama/Llama-3.2-90B-Vision-Instruct",
  98. "llama-3.3-70b": "meta-llama/Llama-3.3-70B-Instruct",
  99. "llama-4-maverick": "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
  100. "llama-4-scout": "meta-llama/Llama-4-Scout-17B-16E-Instruct",
  101. # microsoft
  102. "phi-4": "microsoft/phi-4",
  103. "phi-4-multimodal": default_vision_model,
  104. "phi-4-reasoning-plus": "microsoft/phi-4-reasoning-plus",
  105. "wizardlm-2-7b": "microsoft/WizardLM-2-7B",
  106. "wizardlm-2-8x22b": "microsoft/WizardLM-2-8x22B",
  107. # mistralai
  108. "mistral-small-3.1-24b": "mistralai/Mistral-Small-3.1-24B-Instruct-2503",
  109. # Qwen
  110. "qwen-3-14b": "Qwen/Qwen3-14B",
  111. "qwen-3-30b": "Qwen/Qwen3-30B-A3B",
  112. "qwen-3-32b": "Qwen/Qwen3-32B",
  113. "qwen-3-235b": "Qwen/Qwen3-235B-A22B",
  114. "qwq-32b": "Qwen/QwQ-32B",
  115. }
  116. @classmethod
  117. def get_model(cls, model: str, **kwargs) -> str:
  118. """Get the internal model name from the user-provided model name."""
  119. # kwargs can contain api_key, api_base, etc. but we don't need them for model selection
  120. if not model:
  121. return cls.default_model
  122. # Check if the model exists directly in our models list
  123. if model in cls.models:
  124. return model
  125. # Check if there's an alias for this model
  126. if model in cls.model_aliases:
  127. alias = cls.model_aliases[model]
  128. # If the alias is a list, randomly select one of the options
  129. if isinstance(alias, list):
  130. import random
  131. selected_model = random.choice(alias)
  132. debug.log(f"DeepInfraChat: Selected model '{selected_model}' from alias '{model}'")
  133. return selected_model
  134. debug.log(f"DeepInfraChat: Using model '{alias}' for alias '{model}'")
  135. return alias
  136. raise ModelNotFoundError(f"Model {model} not found")