stevenbucaille commited on
Commit
33eaa22
·
1 Parent(s): 3f0e775
Files changed (2) hide show
  1. app.py +25 -4
  2. llm.py +16 -17
app.py CHANGED
@@ -6,7 +6,7 @@ from gradio import ChatMessage
6
  from smolagents.gradio_ui import stream_to_gradio
7
 
8
  from agents.all_agents import get_master_agent
9
- from llm import get_default_model
10
 
11
 
12
  gr.set_static_paths(paths=["images/"])
@@ -23,8 +23,9 @@ def resize_image(image):
23
  return image
24
 
25
 
26
- def chat_interface_fn(input_request, history: List[ChatMessage], gallery):
27
- agent = get_master_agent(get_default_model())
 
28
  if gallery is None:
29
  gallery = []
30
  else:
@@ -123,6 +124,26 @@ with gr.Blocks() as demo:
123
  </div>
124
  """,
125
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  output_gallery = gr.Gallery(label="Images generated by the agent (do not put images)", type="pil", format="png")
127
  textbox = gr.MultimodalTextbox()
128
  gr.ChatInterface(
@@ -130,7 +151,7 @@ with gr.Blocks() as demo:
130
  type="messages",
131
  multimodal=True,
132
  textbox=textbox,
133
- additional_inputs=[output_gallery],
134
  additional_outputs=[output_gallery],
135
  )
136
 
 
6
  from smolagents.gradio_ui import stream_to_gradio
7
 
8
  from agents.all_agents import get_master_agent
9
+ from llm import ANTHROPIC_MODEL_IDS, get_anthropic_model
10
 
11
 
12
  gr.set_static_paths(paths=["images/"])
 
23
  return image
24
 
25
 
26
+ def chat_interface_fn(input_request, history: List[ChatMessage], gallery, anthropic_api_key, anthropic_model_id):
27
+ model = get_anthropic_model(anthropic_model_id, anthropic_api_key)
28
+ agent = get_master_agent(model)
29
  if gallery is None:
30
  gallery = []
31
  else:
 
124
  </div>
125
  """,
126
  )
127
+ gr.Markdown(
128
+ """
129
+ ## Update 17/06/2025
130
+ This Space was originally a Hackathon submission, funded with Anthropic Free Credits.<br>
131
+ Due to the high popularity of the Space, unfortunately I can't fund personally the credits anymore.<br>
132
+ I have added below the ability to add your own Anthropic API Key and select the model to use.<br>
133
+ """
134
+ )
135
+ anthropic_api_key = gr.Textbox(label="Anthropic API Key")
136
+ anthropic_model_id = gr.Dropdown(label="Anthropic Model", choices=ANTHROPIC_MODEL_IDS)
137
+ gr.Markdown(
138
+ """
139
+ ## Future plans
140
+ I plan to continue developing this Space on a more personal space here : https://huggingface.co/spaces/stevenbucaille/ScouterAI <br>
141
+ This Space will be powered with ZeroGPU and have more LLM options.<br>
142
+ Don't hesitate to like this other Space or reach out to me on <a href="https://www.linkedin.com/in/sbucaille/">LinkedIn</a> if you have any questions or feedback!<br>
143
+ Stay tuned!
144
+ <br>
145
+ """
146
+ )
147
  output_gallery = gr.Gallery(label="Images generated by the agent (do not put images)", type="pil", format="png")
148
  textbox = gr.MultimodalTextbox()
149
  gr.ChatInterface(
 
151
  type="messages",
152
  multimodal=True,
153
  textbox=textbox,
154
+ additional_inputs=[output_gallery, anthropic_api_key, anthropic_model_id],
155
  additional_outputs=[output_gallery],
156
  )
157
 
llm.py CHANGED
@@ -1,25 +1,24 @@
1
- import os
2
-
3
  from smolagents import LiteLLMModel
4
 
5
 
6
- LOCAL_LLM_SETTINGS = {
7
- "api_base": "http://127.0.0.1:1234/v1",
8
- "api_key": "api-key",
9
- "model_id": "gemma-3-12b-it-qat",
10
- }
11
-
12
- ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
13
-
14
- assert ANTHROPIC_API_KEY is not None, "ANTHROPIC_API_KEY is not set"
 
 
15
 
16
 
17
- def get_default_model():
 
 
18
  model = LiteLLMModel(
19
- # model_id="claude-3-7-sonnet-20250219",
20
- model_id="claude-3-5-haiku-latest",
21
- api_key=os.getenv("ANTHROPIC_API_KEY"),
22
- # reasoning_effort="low",
23
  )
24
- print("Loaded LLM model")
25
  return model
 
 
 
1
  from smolagents import LiteLLMModel
2
 
3
 
4
+ ANTHROPIC_MODEL_IDS = [
5
+ "claude-opus-4-20250514",
6
+ "claude-sonnet-4-20250514",
7
+ "claude-3-7-sonnet-latest",
8
+ "claude-3-5-haiku-latest",
9
+ "claude-3-5-sonnet-latest",
10
+ "claude-3-5-sonnet-20240620",
11
+ "claude-3-opus-latest",
12
+ "claude-3-sonnet-20240229",
13
+ "claude-3-haiku-20240307",
14
+ ]
15
 
16
 
17
+ def get_anthropic_model(model_id, anthropic_api_key):
18
+ if model_id not in ANTHROPIC_MODEL_IDS:
19
+ raise ValueError(f"Model {model_id} not found in Anthropic model IDs")
20
  model = LiteLLMModel(
21
+ model_id=model_id,
22
+ api_key=anthropic_api_key,
 
 
23
  )
 
24
  return model