akhaliq HF Staff commited on
Commit
f168ae4
·
1 Parent(s): cc7302a

add codestral 2508

Browse files
Files changed (2) hide show
  1. app.py +47 -14
  2. requirements.txt +2 -1
app.py CHANGED
@@ -27,6 +27,7 @@ from tavily import TavilyClient
27
  from huggingface_hub import HfApi
28
  import tempfile
29
  from openai import OpenAI
 
30
 
31
  # Gradio supported languages for syntax highlighting
32
  GRADIO_SUPPORTED_LANGUAGES = [
@@ -464,6 +465,11 @@ AVAILABLE_MODELS = [
464
  "name": "StepFun Step-3",
465
  "id": "step-3",
466
  "description": "StepFun Step-3 model - AI chat assistant by 阶跃星辰 with multilingual capabilities"
 
 
 
 
 
467
  }
468
  ]
469
 
@@ -571,6 +577,9 @@ def get_inference_client(model_id, provider="auto"):
571
  api_key=os.getenv("STEP_API_KEY"),
572
  base_url="https://api.stepfun.com/v1"
573
  )
 
 
 
574
  elif model_id == "moonshotai/Kimi-K2-Instruct":
575
  provider = "groq"
576
  elif model_id == "Qwen/Qwen3-235B-A22B":
@@ -1930,22 +1939,46 @@ This will help me create a better design for you."""
1930
  else:
1931
  messages.append({'role': 'user', 'content': enhanced_query})
1932
  try:
1933
- completion = client.chat.completions.create(
1934
- model=_current_model["id"],
1935
- messages=messages,
1936
- stream=True,
1937
- max_tokens=16384
1938
- )
 
 
 
 
 
 
 
 
1939
  content = ""
1940
  for chunk in completion:
1941
- # Only process if chunk.choices is non-empty
1942
- if (
1943
- hasattr(chunk, "choices") and chunk.choices and
1944
- hasattr(chunk.choices[0], "delta") and
1945
- hasattr(chunk.choices[0].delta, "content") and
1946
- chunk.choices[0].delta.content is not None
1947
- ):
1948
- content += chunk.choices[0].delta.content
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1949
  search_status = " (with web search)" if enable_search and tavily_client else ""
1950
 
1951
  # Handle transformers.js output differently
 
27
  from huggingface_hub import HfApi
28
  import tempfile
29
  from openai import OpenAI
30
+ from mistralai import Mistral
31
 
32
  # Gradio supported languages for syntax highlighting
33
  GRADIO_SUPPORTED_LANGUAGES = [
 
465
  "name": "StepFun Step-3",
466
  "id": "step-3",
467
  "description": "StepFun Step-3 model - AI chat assistant by 阶跃星辰 with multilingual capabilities"
468
+ },
469
+ {
470
+ "name": "Codestral 2508",
471
+ "id": "codestral-2508",
472
+ "description": "Mistral Codestral model - specialized for code generation and programming tasks"
473
  }
474
  ]
475
 
 
577
  api_key=os.getenv("STEP_API_KEY"),
578
  base_url="https://api.stepfun.com/v1"
579
  )
580
+ elif model_id == "codestral-2508":
581
+ # Use Mistral client for Codestral model
582
+ return Mistral(api_key=os.getenv("MISTRAL_API_KEY"))
583
  elif model_id == "moonshotai/Kimi-K2-Instruct":
584
  provider = "groq"
585
  elif model_id == "Qwen/Qwen3-235B-A22B":
 
1939
  else:
1940
  messages.append({'role': 'user', 'content': enhanced_query})
1941
  try:
1942
+ # Handle Mistral API method difference
1943
+ if _current_model["id"] == "codestral-2508":
1944
+ completion = client.chat.stream(
1945
+ model=_current_model["id"],
1946
+ messages=messages,
1947
+ max_tokens=16384
1948
+ )
1949
+ else:
1950
+ completion = client.chat.completions.create(
1951
+ model=_current_model["id"],
1952
+ messages=messages,
1953
+ stream=True,
1954
+ max_tokens=16384
1955
+ )
1956
  content = ""
1957
  for chunk in completion:
1958
+ # Handle different response formats for Mistral vs others
1959
+ chunk_content = None
1960
+ if _current_model["id"] == "codestral-2508":
1961
+ # Mistral format: chunk.data.choices[0].delta.content
1962
+ if (
1963
+ hasattr(chunk, "data") and chunk.data and
1964
+ hasattr(chunk.data, "choices") and chunk.data.choices and
1965
+ hasattr(chunk.data.choices[0], "delta") and
1966
+ hasattr(chunk.data.choices[0].delta, "content") and
1967
+ chunk.data.choices[0].delta.content is not None
1968
+ ):
1969
+ chunk_content = chunk.data.choices[0].delta.content
1970
+ else:
1971
+ # OpenAI format: chunk.choices[0].delta.content
1972
+ if (
1973
+ hasattr(chunk, "choices") and chunk.choices and
1974
+ hasattr(chunk.choices[0], "delta") and
1975
+ hasattr(chunk.choices[0].delta, "content") and
1976
+ chunk.choices[0].delta.content is not None
1977
+ ):
1978
+ chunk_content = chunk.choices[0].delta.content
1979
+
1980
+ if chunk_content:
1981
+ content += chunk_content
1982
  search_status = " (with web search)" if enable_search and tavily_client else ""
1983
 
1984
  # Handle transformers.js output differently
requirements.txt CHANGED
@@ -9,4 +9,5 @@ opencv-python
9
  requests
10
  beautifulsoup4
11
  html2text
12
- openai
 
 
9
  requests
10
  beautifulsoup4
11
  html2text
12
+ openai
13
+ mistralai