Ниже приведен код от DOC Firebase-AI, демонстрирующий использование функциональных вызовов с моделью Gemini на Android < /p>
// This function calls a hypothetical external API that returns
// a collection of weather information for a given location on a given date.
// `location` is an object of the form { city: string, state: string }
public JsonObject fetchWeather(Location location, String date) {
// TODO(developer): Write a standard function that would call to an external weather API.
// For demo purposes, this hypothetical response is hardcoded here in the expected format.
return new JsonObject(Map.of(
"temperature", JsonPrimitive(38),
"chancePrecipitation", JsonPrimitive("56%"),
"cloudConditions", JsonPrimitive("partlyCloudy")));
}
< /code>
Поэтому я хочу знать, могу ли я просто вернуть строку JSON или даже любой другой объект, такой как String, Boolean и т. Д. Хотя я не пробовал ничего другого, потому что я не знаю, если не использование jsonObject считается не лучшей практикой
edit
Я попытался вернуть объект Hasmap, и я получил эту ошибку
TypeError: Invalid instance of 'java/util/HashMap' passed for a 'kotlinx/serialization/json/JsonObject'
После дальнейшего изучения по функциям responsepart подписи я обнаружил, что jsonobject является обязательным для использования
$ javap -s -classpath classes.jar com.google.firebase.ai.type.FunctionResponsePart
Compiled from "Part.kt"
public final class com.google.firebase.ai.type.FunctionResponsePart implements com.google.firebase.ai.type.Part {
public com.google.firebase.ai.type.FunctionResponsePart(java.lang.String, kotlinx.serialization.json.JsonObject, java.lang.String);
descriptor: (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;)V
public com.google.firebase.ai.type.FunctionResponsePart(java.lang.String, kotlinx.serialization.json.JsonObject, java.lang.String, int, kotlin.jvm.internal.DefaultConstructorMarker);
descriptor: (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final java.lang.String getName();
descriptor: ()Ljava/lang/String;
public final kotlinx.serialization.json.JsonObject getResponse();
descriptor: ()Lkotlinx/serialization/json/JsonObject;
public final java.lang.String getId();
descriptor: ()Ljava/lang/String;
public final com.google.firebase.ai.type.FunctionResponsePart$Internal$FunctionResponse toInternalFunctionCall$com_google_firebase_firebase_ai();
descriptor: ()Lcom/google/firebase/ai/type/FunctionResponsePart$Internal$FunctionResponse;
public com.google.firebase.ai.type.FunctionResponsePart(java.lang.String, kotlinx.serialization.json.JsonObject);
descriptor: (Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ction-call