Skip to content

Commit

Permalink
remove an experiemntal 'gemini' call from the backend
Browse files Browse the repository at this point in the history
  • Loading branch information
devoncarew committed Nov 14, 2024
1 parent 7e4d3e2 commit 174fe2a
Show file tree
Hide file tree
Showing 8 changed files with 3 additions and 92 deletions.
3 changes: 3 additions & 0 deletions pkgs/dart_services/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@ config.properties
.vscode/

bin/server

# Any local environment variable configuration
.env
49 changes: 0 additions & 49 deletions pkgs/dart_services/lib/src/common_server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import 'dart:convert';
import 'dart:io';

import 'package:dartpad_shared/model.dart' as api;
import 'package:google_generative_ai/google_generative_ai.dart' as google_ai;
import 'package:http/http.dart' as http;
import 'package:logging/logging.dart';
import 'package:shelf/shelf.dart';
Expand Down Expand Up @@ -232,50 +231,6 @@ class CommonServerApi {
}
}

static final String? geminiApiKey = Platform.environment['GEMINI_API_KEY'];
http.Client? geminiHttpClient;

@Route.post('$apiPrefix/_gemini')
Future<Response> gemini(Request request, String apiVersion) async {
if (apiVersion != api3) return unhandledVersion(apiVersion);

// Read the api key from env variables (populated on the server).
final apiKey = geminiApiKey;
if (apiKey == null) {
return Response.internalServerError(
body: 'gemini key not configured on server');
}

// Only allow the call from dartpad.dev.
final origin = request.origin;
if (origin != 'https://dartpad.dev') {
return Response.badRequest(
body: 'Gemini calls only allowed from the DartPad front-end');
}

final sourceRequest =
api.SourceRequest.fromJson(await request.readAsJson());

geminiHttpClient ??= http.Client();

final model = google_ai.GenerativeModel(
model: 'models/gemini-1.5-flash-latest',
apiKey: apiKey,
httpClient: geminiHttpClient,
);

final result = await serialize(() async {
// call gemini
final result = await model.generateContent([
google_ai.Content.text(sourceRequest.source),
]);

return api.GeminiResponse(response: result.text!);
});

return ok(result.toJson());
}

Response ok(Map<String, dynamic> json) {
return Response.ok(
_jsonEncoder.convert(json),
Expand Down Expand Up @@ -403,7 +358,3 @@ String _formatMessage(

return message;
}

extension on Request {
String? get origin => headers['origin'];
}
5 changes: 0 additions & 5 deletions pkgs/dart_services/lib/src/common_server.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion pkgs/dart_services/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ dependencies:
bazel_worker: ^1.1.1
dartpad_shared: ^0.0.0
encrypt: ^5.0.3
google_generative_ai: ^0.4.6
http: ^1.2.1
json_annotation: ^4.9.0
logging: ^1.2.0
Expand Down
17 changes: 0 additions & 17 deletions pkgs/dartpad_shared/lib/model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -375,23 +375,6 @@ class VersionResponse {
Map<String, Object?> toJson() => _$VersionResponseToJson(this);
}

@JsonSerializable()
class GeminiResponse {
final String response;

GeminiResponse({
required this.response,
});

factory GeminiResponse.fromJson(Map<String, Object?> json) =>
_$GeminiResponseFromJson(json);

Map<String, Object?> toJson() => _$GeminiResponseToJson(this);

@override
String toString() => 'GeminiResponse[response=$response]';
}

@JsonSerializable()
class OpenInIdxRequest {
final String code;
Expand Down
10 changes: 0 additions & 10 deletions pkgs/dartpad_shared/lib/model.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions pkgs/dartpad_shared/lib/services.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import 'dart:convert';

import 'package:http/http.dart';
import 'package:meta/meta.dart';

import 'model.dart';

Expand Down Expand Up @@ -44,11 +43,6 @@ class ServicesClient {
Future<OpenInIdxResponse> openInIdx(OpenInIdxRequest request) =>
_requestPost('openInIDX', request.toJson(), OpenInIdxResponse.fromJson);

/// Note: this API is experimental and could change or be removed at any time.
@experimental
Future<GeminiResponse> gemini(SourceRequest request) =>
_requestPost('_gemini', request.toJson(), GeminiResponse.fromJson);

void dispose() => client.close();

Future<T> _requestGet<T>(
Expand Down
4 changes: 0 additions & 4 deletions pkgs/dartpad_ui/lib/model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -339,10 +339,6 @@ class AppServices {
return await services.document(request);
}

Future<GeminiResponse> gemini(SourceRequest request) async {
return await services.gemini(request);
}

Future<CompileResponse> compile(CompileRequest request) async {
try {
appModel.compilingBusy.value = true;
Expand Down

0 comments on commit 174fe2a

Please sign in to comment.