altozachmo commited on
Commit
ae14774
·
1 Parent(s): cf51709

add gemini agent

Browse files
Files changed (6) hide show
  1. .github/workflows/main.yaml +1 -0
  2. agents/agent.py +8 -4
  3. app.py +3 -3
  4. requirements.txt +275 -2
  5. run_local_agent.py +12 -9
  6. test.py +1 -1
.github/workflows/main.yaml CHANGED
@@ -18,4 +18,5 @@ jobs:
18
  HF_TOKEN: ${{ secrets.HF_TOKEN }}
19
  HF_USERNAME: altozachmo
20
  SPACE_NAME: Final_Assignment_Template
 
21
  run: git push https://$HF_USERNAME:[email protected]/spaces/$HF_USERNAME/$SPACE_NAME main
 
18
  HF_TOKEN: ${{ secrets.HF_TOKEN }}
19
  HF_USERNAME: altozachmo
20
  SPACE_NAME: Final_Assignment_Template
21
+ GEMINI_API_KEY: ${{ secrets.GOOGLE_AI_STUDIO_API_KEY }}
22
  run: git push https://$HF_USERNAME:[email protected]/spaces/$HF_USERNAME/$SPACE_NAME main
agents/agent.py CHANGED
@@ -11,10 +11,11 @@ class MyAgent:
11
  def __init__(
12
  self,
13
  provider: str = "litellm",
14
- model_id: str = "gemma3:12b-it-qat",
15
  api_base: str | None = None,
16
  api_key: str | None = None,
17
  planning_interval: int = 3,
 
18
  ):
19
  """
20
  Initializes the agent depending on the provider and model ID.
@@ -29,11 +30,14 @@ class MyAgent:
29
  self.api_base = api_base
30
  self.api_key = api_key
31
  self.planning_interval = planning_interval
 
32
 
33
  model = LiteLLMModel(
34
- model_id="ollama_chat/gemma3:12b-it-qat",
35
- api_base="http://localhost:11434",
36
- num_ctx=8196, # ollama default is 2048 which will fail horribly. 8192 works for easy tasks, more is better. Check https://huggingface.co/spaces/NyxKrage/LLM-Model-VRAM-Calculator to calculate how much VRAM this will need for the selected model.
 
 
37
  )
38
 
39
  tools = [
 
11
  def __init__(
12
  self,
13
  provider: str = "litellm",
14
+ model_id: str = "ollama_chat/gemma3:12b-it-qat",
15
  api_base: str | None = None,
16
  api_key: str | None = None,
17
  planning_interval: int = 3,
18
+ num_ctx: int = 8192,
19
  ):
20
  """
21
  Initializes the agent depending on the provider and model ID.
 
30
  self.api_base = api_base
31
  self.api_key = api_key
32
  self.planning_interval = planning_interval
33
+ self.num_ctx = num_ctx
34
 
35
  model = LiteLLMModel(
36
+ model_id=self.model_id,
37
+ api_base=self.api_base,
38
+ api_key=self.api_key,
39
+ num_ctx=self.num_ctx,
40
+ add_base_tools=True,
41
  )
42
 
43
  tools = [
app.py CHANGED
@@ -30,10 +30,10 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
30
  try:
31
  agent = MyAgent(
32
  provider="litellm",
33
- model_id="gemma3:12b-it-qat",
34
- api_base="http://localhost:11434",
35
- api_key=None,
36
  planning_interval=3,
 
37
  )
38
 
39
  except Exception as e:
 
30
  try:
31
  agent = MyAgent(
32
  provider="litellm",
33
+ model_id="gemini/gemini-2.0-flash-lite",
34
+ api_key=os.getenv("GEMINI_API_KEY"),
 
35
  planning_interval=3,
36
+ num_ctx=8192,
37
  )
38
 
39
  except Exception as e:
requirements.txt CHANGED
@@ -1,2 +1,275 @@
1
- gradio
2
- requests
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv pip compile pyproject.toml -o requirements.txt
3
+ aiofiles==24.1.0
4
+ # via gradio
5
+ aiohappyeyeballs==2.6.1
6
+ # via aiohttp
7
+ aiohttp==3.11.18
8
+ # via litellm
9
+ aiosignal==1.3.2
10
+ # via aiohttp
11
+ annotated-types==0.7.0
12
+ # via pydantic
13
+ anyio==4.9.0
14
+ # via
15
+ # gradio
16
+ # httpx
17
+ # openai
18
+ # starlette
19
+ attrs==25.3.0
20
+ # via
21
+ # aiohttp
22
+ # jsonschema
23
+ # referencing
24
+ authlib==1.5.2
25
+ # via gradio
26
+ beautifulsoup4==4.13.4
27
+ # via markdownify
28
+ certifi==2025.4.26
29
+ # via
30
+ # httpcore
31
+ # httpx
32
+ # requests
33
+ cffi==1.17.1
34
+ # via cryptography
35
+ charset-normalizer==3.4.1
36
+ # via requests
37
+ click==8.1.8
38
+ # via
39
+ # duckduckgo-search
40
+ # litellm
41
+ # typer
42
+ # uvicorn
43
+ cryptography==44.0.2
44
+ # via authlib
45
+ distro==1.9.0
46
+ # via openai
47
+ duckduckgo-search==8.0.1
48
+ # via smolagents
49
+ fastapi==0.115.12
50
+ # via gradio
51
+ ffmpy==0.5.0
52
+ # via gradio
53
+ filelock==3.18.0
54
+ # via huggingface-hub
55
+ frozenlist==1.6.0
56
+ # via
57
+ # aiohttp
58
+ # aiosignal
59
+ fsspec==2025.3.2
60
+ # via
61
+ # gradio-client
62
+ # huggingface-hub
63
+ gradio==5.27.0
64
+ # via hf-agents-gaia-agent (pyproject.toml)
65
+ gradio-client==1.9.0
66
+ # via gradio
67
+ groovy==0.1.2
68
+ # via gradio
69
+ h11==0.16.0
70
+ # via
71
+ # httpcore
72
+ # uvicorn
73
+ httpcore==1.0.9
74
+ # via httpx
75
+ httpx==0.28.1
76
+ # via
77
+ # gradio
78
+ # gradio-client
79
+ # litellm
80
+ # openai
81
+ # safehttpx
82
+ huggingface-hub==0.30.2
83
+ # via
84
+ # gradio
85
+ # gradio-client
86
+ # smolagents
87
+ # tokenizers
88
+ idna==3.10
89
+ # via
90
+ # anyio
91
+ # httpx
92
+ # requests
93
+ # yarl
94
+ importlib-metadata==8.7.0
95
+ # via litellm
96
+ itsdangerous==2.2.0
97
+ # via gradio
98
+ jinja2==3.1.6
99
+ # via
100
+ # gradio
101
+ # litellm
102
+ # smolagents
103
+ jiter==0.9.0
104
+ # via openai
105
+ jsonschema==4.23.0
106
+ # via litellm
107
+ jsonschema-specifications==2025.4.1
108
+ # via jsonschema
109
+ litellm==1.67.1
110
+ # via
111
+ # hf-agents-gaia-agent (pyproject.toml)
112
+ # smolagents
113
+ lxml==5.4.0
114
+ # via duckduckgo-search
115
+ markdown-it-py==3.0.0
116
+ # via rich
117
+ markdownify==1.1.0
118
+ # via smolagents
119
+ markupsafe==3.0.2
120
+ # via
121
+ # gradio
122
+ # jinja2
123
+ mdurl==0.1.2
124
+ # via markdown-it-py
125
+ multidict==6.4.3
126
+ # via
127
+ # aiohttp
128
+ # yarl
129
+ numpy==2.2.5
130
+ # via
131
+ # hf-agents-gaia-agent (pyproject.toml)
132
+ # gradio
133
+ # pandas
134
+ openai==1.76.0
135
+ # via
136
+ # hf-agents-gaia-agent (pyproject.toml)
137
+ # litellm
138
+ orjson==3.10.16
139
+ # via gradio
140
+ packaging==25.0
141
+ # via
142
+ # gradio
143
+ # gradio-client
144
+ # huggingface-hub
145
+ pandas==2.2.3
146
+ # via
147
+ # hf-agents-gaia-agent (pyproject.toml)
148
+ # gradio
149
+ pillow==11.2.1
150
+ # via
151
+ # gradio
152
+ # smolagents
153
+ primp==0.15.0
154
+ # via duckduckgo-search
155
+ propcache==0.3.1
156
+ # via
157
+ # aiohttp
158
+ # yarl
159
+ pycparser==2.22
160
+ # via cffi
161
+ pydantic==2.11.3
162
+ # via
163
+ # fastapi
164
+ # gradio
165
+ # litellm
166
+ # openai
167
+ pydantic-core==2.33.1
168
+ # via pydantic
169
+ pydub==0.25.1
170
+ # via gradio
171
+ pygments==2.19.1
172
+ # via rich
173
+ python-dateutil==2.9.0.post0
174
+ # via pandas
175
+ python-dotenv==1.1.0
176
+ # via
177
+ # hf-agents-gaia-agent (pyproject.toml)
178
+ # litellm
179
+ # smolagents
180
+ python-multipart==0.0.20
181
+ # via gradio
182
+ pytz==2025.2
183
+ # via pandas
184
+ pyyaml==6.0.2
185
+ # via
186
+ # gradio
187
+ # huggingface-hub
188
+ referencing==0.36.2
189
+ # via
190
+ # jsonschema
191
+ # jsonschema-specifications
192
+ regex==2024.11.6
193
+ # via tiktoken
194
+ requests==2.32.3
195
+ # via
196
+ # hf-agents-gaia-agent (pyproject.toml)
197
+ # huggingface-hub
198
+ # smolagents
199
+ # tiktoken
200
+ # wikipedia-api
201
+ rich==14.0.0
202
+ # via
203
+ # smolagents
204
+ # typer
205
+ rpds-py==0.24.0
206
+ # via
207
+ # jsonschema
208
+ # referencing
209
+ ruff==0.11.7
210
+ # via gradio
211
+ safehttpx==0.1.6
212
+ # via gradio
213
+ semantic-version==2.10.0
214
+ # via gradio
215
+ shellingham==1.5.4
216
+ # via typer
217
+ six==1.17.0
218
+ # via
219
+ # markdownify
220
+ # python-dateutil
221
+ smolagents==1.14.0
222
+ # via hf-agents-gaia-agent (pyproject.toml)
223
+ sniffio==1.3.1
224
+ # via
225
+ # anyio
226
+ # openai
227
+ soupsieve==2.7
228
+ # via beautifulsoup4
229
+ starlette==0.46.2
230
+ # via
231
+ # fastapi
232
+ # gradio
233
+ tiktoken==0.9.0
234
+ # via litellm
235
+ tokenizers==0.21.1
236
+ # via litellm
237
+ tomlkit==0.13.2
238
+ # via gradio
239
+ tqdm==4.67.1
240
+ # via
241
+ # hf-agents-gaia-agent (pyproject.toml)
242
+ # huggingface-hub
243
+ # openai
244
+ typer==0.15.2
245
+ # via gradio
246
+ typing-extensions==4.13.2
247
+ # via
248
+ # anyio
249
+ # beautifulsoup4
250
+ # fastapi
251
+ # gradio
252
+ # gradio-client
253
+ # huggingface-hub
254
+ # openai
255
+ # pydantic
256
+ # pydantic-core
257
+ # referencing
258
+ # typer
259
+ # typing-inspection
260
+ typing-inspection==0.4.0
261
+ # via pydantic
262
+ tzdata==2025.2
263
+ # via pandas
264
+ urllib3==2.4.0
265
+ # via requests
266
+ uvicorn==0.34.2
267
+ # via gradio
268
+ websockets==15.0.1
269
+ # via gradio-client
270
+ wikipedia-api==0.8.1
271
+ # via hf-agents-gaia-agent (pyproject.toml)
272
+ yarl==1.20.0
273
+ # via aiohttp
274
+ zipp==3.21.0
275
+ # via importlib-metadata
run_local_agent.py CHANGED
@@ -7,20 +7,23 @@ from dotenv import load_dotenv
7
  load_dotenv()
8
 
9
  QUESTIONS_FILEPATH: str = os.getenv("QUESTIONS_FILEPATH", default="metadata.jsonl")
 
10
  OLLAMA_API_BASE: str = os.getenv("OLLAMA_API_BASE", default="http://localhost:11434")
11
- OLLAMA_API_KEY: str | None = os.getenv("OLLAMA_API_KEY")
 
12
 
 
 
 
 
 
 
 
13
 
14
- print(f"Using OLLAMA API base: {OLLAMA_API_BASE}")
15
 
16
  if __name__ == "__main__":
17
- agent = MyAgent(
18
- provider="litellm",
19
- model_id="gemma3:12b-it-qat",
20
- api_base=OLLAMA_API_BASE,
21
- api_key=OLLAMA_API_KEY,
22
- planning_interval=3,
23
- )
24
 
25
  with open(QUESTIONS_FILEPATH, "r") as f:
26
  questions = json.load(f)
 
7
  load_dotenv()
8
 
9
  QUESTIONS_FILEPATH: str = os.getenv("QUESTIONS_FILEPATH", default="metadata.jsonl")
10
+ OLLAMA_MODEL_ID: str = os.getenv("OLLAMA_MODEL_ID", default="gemma3:12b-it-qat")
11
  OLLAMA_API_BASE: str = os.getenv("OLLAMA_API_BASE", default="http://localhost:11434")
12
+ OLLAMA_API_KEY: str | None = os.getenv("GOOGLE_AI_STUDIO_API_KEY")
13
+ OLLAMA_NUM_CTX: int = int(os.getenv("OLLAMA_NUM_CTX", default=8192))
14
 
15
+ myagent_args = {
16
+ "provider": "litellm",
17
+ "model_id": "gemini/gemini-2.0-flash-lite",
18
+ # "api_base": OLLAMA_API_BASE,
19
+ "planning_interval": 3,
20
+ "num_ctx": OLLAMA_NUM_CTX,
21
+ }
22
 
23
+ print(f"Using args: {myagent_args}")
24
 
25
  if __name__ == "__main__":
26
+ agent = MyAgent(**myagent_args)
 
 
 
 
 
 
27
 
28
  with open(QUESTIONS_FILEPATH, "r") as f:
29
  questions = json.load(f)
test.py CHANGED
@@ -2,7 +2,7 @@ from smolagents import LiteLLMModel, OpenAIServerModel
2
  from dotenv import load_dotenv
3
  load_dotenv()
4
 
5
- model_id = "ollama_chat/gemma3:12b-it-qat"
6
  api_base = "http://localhost:11434/v1"
7
 
8
  # model = LiteLLMModel(
 
2
  from dotenv import load_dotenv
3
  load_dotenv()
4
 
5
+ model_id = "ollama_chat/mistral-small3.1:latest"
6
  api_base = "http://localhost:11434/v1"
7
 
8
  # model = LiteLLMModel(