cstr commited on
Commit
499fdba
·
verified ·
1 Parent(s): 2bd0db0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -35
app.py CHANGED
@@ -705,6 +705,7 @@ def call_anthropic_api(payload, api_key_override=None):
705
  # Try to import Anthropic
706
  try:
707
  import anthropic
 
708
  except ImportError:
709
  raise ImportError("Anthropic package not installed. Install it with: pip install anthropic")
710
 
@@ -712,7 +713,7 @@ def call_anthropic_api(payload, api_key_override=None):
712
  if not api_key:
713
  raise ValueError("Anthropic API key is required")
714
 
715
- client = anthropic.Anthropic(api_key=api_key)
716
 
717
  # Extract parameters from payload
718
  model = payload.get("model", "claude-3-5-sonnet-20241022")
@@ -723,30 +724,32 @@ def call_anthropic_api(payload, api_key_override=None):
723
  # Format messages for Anthropic
724
  # Find system message if any
725
  system_prompt = None
726
- anthropic_messages = []
727
 
728
  for msg in messages:
729
  if msg["role"] == "system":
730
  system_prompt = msg["content"]
731
  else:
732
- # Handle multimodal content if needed
733
  if isinstance(msg["content"], list):
734
- # For image handling
735
- content_parts = []
736
  for item in msg["content"]:
737
  if item["type"] == "text":
738
- content_parts.append({
739
- "type": "text",
740
  "text": item["text"]
741
  })
742
  elif item["type"] == "image_url":
743
- # Handle base64 images if needed
744
- img_url = item["image_url"]["url"]
745
- if img_url.startswith("data:image"):
746
- # Extract the media type and base64 data
747
- media_type = img_url.split(";")[0].split(":")[1]
748
- base64_data = img_url.split(",")[1]
749
- content_parts.append({
 
 
750
  "type": "image",
751
  "source": {
752
  "type": "base64",
@@ -754,14 +757,20 @@ def call_anthropic_api(payload, api_key_override=None):
754
  "data": base64_data
755
  }
756
  })
757
- anthropic_messages.append({
758
- "role": "user" if msg["role"] == "user" else "assistant",
759
- "content": content_parts
 
 
 
 
 
 
760
  })
761
  else:
762
- # Simple text messages
763
- anthropic_messages.append({
764
- "role": "user" if msg["role"] == "user" else "assistant",
765
  "content": msg["content"]
766
  })
767
 
@@ -771,7 +780,7 @@ def call_anthropic_api(payload, api_key_override=None):
771
  max_tokens=max_tokens,
772
  temperature=temperature,
773
  system=system_prompt,
774
- messages=anthropic_messages
775
  )
776
 
777
  return response
@@ -2854,7 +2863,7 @@ def create_app():
2854
  return None
2855
 
2856
  # Set up submission event
2857
- def submit_message(message, chatbot, provider_choice,
2858
  openrouter_model, openai_model, hf_model, groq_model, cohere_model, together_model, anthropic_model, googleai_model,
2859
  temperature, max_tokens, top_p, frequency_penalty, presence_penalty, repetition_penalty,
2860
  top_k, min_p, seed, top_a, stream_output, response_format,
@@ -2863,41 +2872,41 @@ def create_app():
2863
 
2864
  """Submit message to selected provider and model"""
2865
  # Get the currently selected model
2866
- model_choice = get_current_model(provider_choice, openrouter_model, openai_model, hf_model, groq_model, cohere_model,
2867
  together_model, anthropic_model, googleai_model)
2868
 
2869
  # Check if model is selected
2870
  if not model_choice:
2871
- error_message = f"Error: No model selected for provider {provider_choice}"
2872
- return chatbot + [
2873
  {"role": "user", "content": message},
2874
  {"role": "assistant", "content": error_message}
2875
  ]
2876
 
2877
  # Select the appropriate API key based on the provider
2878
  api_key_override = None
2879
- if provider_choice == "OpenRouter" and openrouter_api_key:
2880
  api_key_override = openrouter_api_key
2881
- elif provider_choice == "OpenAI" and openai_api_key:
2882
  api_key_override = openai_api_key
2883
- elif provider_choice == "HuggingFace" and hf_api_key:
2884
  api_key_override = hf_api_key
2885
- elif provider_choice == "Groq" and groq_api_key:
2886
  api_key_override = groq_api_key
2887
- elif provider_choice == "Cohere" and cohere_api_key:
2888
  api_key_override = cohere_api_key
2889
- elif provider_choice == "Together" and together_api_key:
2890
  api_key_override = together_api_key
2891
- elif provider_choice == "Anthropic" and anthropic_api_key:
2892
  api_key_override = anthropic_api_key
2893
- elif provider_choice == "GoogleAI" and googleai_api_key:
2894
  api_key_override = googleai_api_key
2895
 
2896
  # Call the ask_ai function with the appropriate parameters
2897
  return ask_ai(
2898
  message=message,
2899
- history=chatbot,
2900
- provider=provider_choice,
2901
  model_choice=model_choice,
2902
  temperature=temperature,
2903
  max_tokens=max_tokens,
 
705
  # Try to import Anthropic
706
  try:
707
  import anthropic
708
+ from anthropic import Anthropic
709
  except ImportError:
710
  raise ImportError("Anthropic package not installed. Install it with: pip install anthropic")
711
 
 
713
  if not api_key:
714
  raise ValueError("Anthropic API key is required")
715
 
716
+ client = Anthropic(api_key=api_key)
717
 
718
  # Extract parameters from payload
719
  model = payload.get("model", "claude-3-5-sonnet-20241022")
 
724
  # Format messages for Anthropic
725
  # Find system message if any
726
  system_prompt = None
727
+ chat_messages = []
728
 
729
  for msg in messages:
730
  if msg["role"] == "system":
731
  system_prompt = msg["content"]
732
  else:
733
+ # Format content
734
  if isinstance(msg["content"], list):
735
+ # Handle multimodal content (images)
736
+ anthropic_content = []
737
  for item in msg["content"]:
738
  if item["type"] == "text":
739
+ anthropic_content.append({
740
+ "type": "text",
741
  "text": item["text"]
742
  })
743
  elif item["type"] == "image_url":
744
+ # Extract base64 from data URL if present
745
+ image_url = item["image_url"]["url"]
746
+ if image_url.startswith("data:"):
747
+ # Extract media type and base64 data
748
+ parts = image_url.split(",", 1)
749
+ media_type = parts[0].split(":")[1].split(";")[0]
750
+ base64_data = parts[1]
751
+
752
+ anthropic_content.append({
753
  "type": "image",
754
  "source": {
755
  "type": "base64",
 
757
  "data": base64_data
758
  }
759
  })
760
+ else:
761
+ # URL not supported by Anthropic yet
762
+ anthropic_content.append({
763
+ "type": "text",
764
+ "text": f"[Image URL: {image_url}]"
765
+ })
766
+ chat_messages.append({
767
+ "role": msg["role"],
768
+ "content": anthropic_content
769
  })
770
  else:
771
+ # Simple text content
772
+ chat_messages.append({
773
+ "role": msg["role"],
774
  "content": msg["content"]
775
  })
776
 
 
780
  max_tokens=max_tokens,
781
  temperature=temperature,
782
  system=system_prompt,
783
+ messages=chat_messages
784
  )
785
 
786
  return response
 
2863
  return None
2864
 
2865
  # Set up submission event
2866
+ def submit_message(message, history, provider,
2867
  openrouter_model, openai_model, hf_model, groq_model, cohere_model, together_model, anthropic_model, googleai_model,
2868
  temperature, max_tokens, top_p, frequency_penalty, presence_penalty, repetition_penalty,
2869
  top_k, min_p, seed, top_a, stream_output, response_format,
 
2872
 
2873
  """Submit message to selected provider and model"""
2874
  # Get the currently selected model
2875
+ model_choice = get_current_model(provider, openrouter_model, openai_model, hf_model, groq_model, cohere_model,
2876
  together_model, anthropic_model, googleai_model)
2877
 
2878
  # Check if model is selected
2879
  if not model_choice:
2880
+ error_message = f"Error: No model selected for provider {provider}"
2881
+ return history + [
2882
  {"role": "user", "content": message},
2883
  {"role": "assistant", "content": error_message}
2884
  ]
2885
 
2886
  # Select the appropriate API key based on the provider
2887
  api_key_override = None
2888
+ if provider == "OpenRouter" and openrouter_api_key:
2889
  api_key_override = openrouter_api_key
2890
+ elif provider == "OpenAI" and openai_api_key:
2891
  api_key_override = openai_api_key
2892
+ elif provider == "HuggingFace" and hf_api_key:
2893
  api_key_override = hf_api_key
2894
+ elif provider == "Groq" and groq_api_key:
2895
  api_key_override = groq_api_key
2896
+ elif provider == "Cohere" and cohere_api_key:
2897
  api_key_override = cohere_api_key
2898
+ elif provider == "Together" and together_api_key:
2899
  api_key_override = together_api_key
2900
+ elif provider == "Anthropic" and anthropic_api_key:
2901
  api_key_override = anthropic_api_key
2902
+ elif provider == "GoogleAI" and googleai_api_key:
2903
  api_key_override = googleai_api_key
2904
 
2905
  # Call the ask_ai function with the appropriate parameters
2906
  return ask_ai(
2907
  message=message,
2908
+ history=history,
2909
+ provider=provider,
2910
  model_choice=model_choice,
2911
  temperature=temperature,
2912
  max_tokens=max_tokens,