Skip to content

Commit 22ea449

Browse files
committed
Integrate LeaderboardService into SkillTreeViewModel
This commit integrates the `LeaderboardService` into `SkillTreeViewModel` to enable benchmark report submissions to the leaderboard. A `BenchmarkRun` object is created from the evaluation response and submitted using the `submitReport` method from `LeaderboardService`.
1 parent ff4c76b commit 22ea449

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

frontend/lib/main.dart

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:auto_gpt_flutter_client/services/auth_service.dart';
1+
import 'package:auto_gpt_flutter_client/services/leaderboard_service.dart';
22
import 'package:auto_gpt_flutter_client/views/auth/firebase_auth_view.dart';
33
import 'package:flutter/material.dart';
44
import 'views/main_layout.dart';
@@ -47,9 +47,13 @@ void main() async {
4747
TaskService(restApiUtility),
4848
),
4949
ProxyProvider<RestApiUtility, BenchmarkService>(
50-
update: (context, restApiUtility, taskService) =>
50+
update: (context, restApiUtility, benchmarkService) =>
5151
BenchmarkService(restApiUtility),
5252
),
53+
ProxyProvider<RestApiUtility, LeaderboardService>(
54+
update: (context, restApiUtility, leaderboardService) =>
55+
LeaderboardService(restApiUtility),
56+
),
5357
ChangeNotifierProxyProvider<RestApiUtility, ApiSettingsViewModel>(
5458
create: (context) => ApiSettingsViewModel(
5559
Provider.of<RestApiUtility>(context, listen: false)),
@@ -90,7 +94,8 @@ class MyApp extends StatelessWidget {
9094
Provider.of<TaskService>(context, listen: false))),
9195
ChangeNotifierProvider(
9296
create: (context) => SkillTreeViewModel(
93-
Provider.of<BenchmarkService>(context, listen: false)),
97+
Provider.of<BenchmarkService>(context, listen: false),
98+
Provider.of<LeaderboardService>(context, listen: false)),
9499
),
95100
],
96101
child: MainLayout(),

frontend/lib/viewmodels/skill_tree_viewmodel.dart

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'dart:convert';
2+
import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_run.dart';
23
import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_step_request_body.dart';
34
import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_task_request_body.dart';
45
import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_task_status.dart';
@@ -8,6 +9,7 @@ import 'package:auto_gpt_flutter_client/models/step.dart';
89
import 'package:auto_gpt_flutter_client/models/task.dart';
910
import 'package:auto_gpt_flutter_client/models/test_suite.dart';
1011
import 'package:auto_gpt_flutter_client/services/benchmark_service.dart';
12+
import 'package:auto_gpt_flutter_client/services/leaderboard_service.dart';
1113
import 'package:auto_gpt_flutter_client/viewmodels/chat_viewmodel.dart';
1214
import 'package:auto_gpt_flutter_client/viewmodels/task_viewmodel.dart';
1315
import 'package:collection/collection.dart';
@@ -19,6 +21,8 @@ class SkillTreeViewModel extends ChangeNotifier {
1921
// TODO: Potentially move to task queue view model when we create one
2022
final BenchmarkService benchmarkService;
2123
// TODO: Potentially move to task queue view model when we create one
24+
final LeaderboardService leaderboardService;
25+
// TODO: Potentially move to task queue view model when we create one
2226
bool isBenchmarkRunning = false;
2327
// TODO: Potentially move to task queue view model when we create one
2428
Map<SkillTreeNode, BenchmarkTaskStatus> benchmarkStatusMap = {};
@@ -37,7 +41,7 @@ class SkillTreeViewModel extends ChangeNotifier {
3741
final Graph graph = Graph()..isTree = true;
3842
BuchheimWalkerConfiguration builder = BuchheimWalkerConfiguration();
3943

40-
SkillTreeViewModel(this.benchmarkService);
44+
SkillTreeViewModel(this.benchmarkService, this.leaderboardService);
4145

4246
Future<void> initializeSkillTree() async {
4347
try {
@@ -206,6 +210,13 @@ class SkillTreeViewModel extends ChangeNotifier {
206210
await benchmarkService.triggerEvaluation(task.id);
207211
print("Evaluation response: $evaluationResponse");
208212

213+
// Decode the evaluationResponse into a BenchmarkRun object
214+
BenchmarkRun benchmarkRun = BenchmarkRun.fromJson(evaluationResponse);
215+
216+
// TODO: We should only trigger this if the user has designated they want to submit
217+
// Submit the BenchmarkRun object to the leaderboard
218+
await leaderboardService.submitReport(benchmarkRun);
219+
209220
// Update the benchmarkStatusList based on the evaluation response
210221
bool successStatus = evaluationResponse['metrics']['success'];
211222
benchmarkStatusMap[node] = successStatus

0 commit comments

Comments
 (0)