@@ -21,10 +21,6 @@ import android.graphics.BitmapFactory
21
21
import android.util.Base64
22
22
import com.google.firebase.vertexai.common.client.Schema
23
23
import com.google.firebase.vertexai.common.shared.FileData
24
- import com.google.firebase.vertexai.common.shared.FunctionCall
25
- import com.google.firebase.vertexai.common.shared.FunctionCallPart
26
- import com.google.firebase.vertexai.common.shared.FunctionResponse
27
- import com.google.firebase.vertexai.common.shared.FunctionResponsePart
28
24
import com.google.firebase.vertexai.common.shared.InlineData
29
25
import com.google.firebase.vertexai.type.BlockReason
30
26
import com.google.firebase.vertexai.type.Candidate
@@ -34,8 +30,12 @@ import com.google.firebase.vertexai.type.Content
34
30
import com.google.firebase.vertexai.type.CountTokensResponse
35
31
import com.google.firebase.vertexai.type.FileDataPart
36
32
import com.google.firebase.vertexai.type.FinishReason
33
+ import com.google.firebase.vertexai.type.FunctionCall
34
+ import com.google.firebase.vertexai.type.FunctionCallPart
37
35
import com.google.firebase.vertexai.type.FunctionCallingConfig
38
36
import com.google.firebase.vertexai.type.FunctionDeclaration
37
+ import com.google.firebase.vertexai.type.FunctionResponse
38
+ import com.google.firebase.vertexai.type.FunctionResponsePart
39
39
import com.google.firebase.vertexai.type.GenerateContentResponse
40
40
import com.google.firebase.vertexai.type.GenerationConfig
41
41
import com.google.firebase.vertexai.type.HarmBlockMethod
@@ -59,6 +59,7 @@ import java.io.ByteArrayOutputStream
59
59
import java.util.Calendar
60
60
import kotlinx.serialization.json.Json
61
61
import kotlinx.serialization.json.JsonObject
62
+ import kotlinx.serialization.json.JsonPrimitive
62
63
import org.json.JSONObject
63
64
64
65
private const val BASE_64_FLAGS = Base64 .NO_WRAP
@@ -80,10 +81,10 @@ internal fun Part.toInternal(): com.google.firebase.vertexai.common.shared.Part
80
81
com.google.firebase.vertexai.common.shared.InlineDataPart (
81
82
InlineData (mimeType, Base64 .encodeToString(inlineData, BASE_64_FLAGS ))
82
83
)
83
- is com.google.firebase.vertexai.type. FunctionCallPart ->
84
- FunctionCallPart (FunctionCall (name, args.orEmpty() ))
85
- is com.google.firebase.vertexai.type. FunctionResponsePart ->
86
- FunctionResponsePart (FunctionResponse (name, response .toInternal() ))
84
+ is FunctionCallPart ->
85
+ com.google.firebase.vertexai.common.shared. FunctionCallPart (functionCall.toInternal( ))
86
+ is FunctionResponsePart ->
87
+ com.google.firebase.vertexai.common.shared. FunctionResponsePart (functionResponse .toInternal())
87
88
is FileDataPart ->
88
89
com.google.firebase.vertexai.common.shared.FileDataPart (
89
90
FileData (mimeType = mimeType, fileUri = uri)
@@ -95,6 +96,15 @@ internal fun Part.toInternal(): com.google.firebase.vertexai.common.shared.Part
95
96
}
96
97
}
97
98
99
+ internal fun FunctionCall.toInternal () =
100
+ com.google.firebase.vertexai.common.shared.FunctionCall (
101
+ name,
102
+ args.orEmpty().mapValues { it.value.toString() }
103
+ )
104
+
105
+ internal fun FunctionResponse.toInternal () =
106
+ com.google.firebase.vertexai.common.shared.FunctionResponse (name, response)
107
+
98
108
internal fun SafetySetting.toInternal () =
99
109
com.google.firebase.vertexai.common.shared.SafetySetting (
100
110
harmCategory.toInternal(),
@@ -213,16 +223,10 @@ internal fun com.google.firebase.vertexai.common.shared.Part.toPublic(): Part {
213
223
InlineDataPart (inlineData.mimeType, data)
214
224
}
215
225
}
216
- is FunctionCallPart ->
217
- com.google.firebase.vertexai.type.FunctionCallPart (
218
- functionCall.name,
219
- functionCall.args.orEmpty(),
220
- )
221
- is FunctionResponsePart ->
222
- com.google.firebase.vertexai.type.FunctionResponsePart (
223
- functionResponse.name,
224
- functionResponse.response.toPublic(),
225
- )
226
+ is com.google.firebase.vertexai.common.shared.FunctionCallPart ->
227
+ FunctionCallPart (functionCall.toPublic())
228
+ is com.google.firebase.vertexai.common.shared.FunctionResponsePart ->
229
+ FunctionResponsePart (functionResponse.toPublic())
226
230
is com.google.firebase.vertexai.common.shared.FileDataPart ->
227
231
FileDataPart (fileData.mimeType, fileData.fileUri)
228
232
else ->
@@ -232,6 +236,21 @@ internal fun com.google.firebase.vertexai.common.shared.Part.toPublic(): Part {
232
236
}
233
237
}
234
238
239
+ internal fun com.google.firebase.vertexai.common.shared.FunctionCall.toPublic () =
240
+ FunctionCall (
241
+ name,
242
+ args.orEmpty().mapValues {
243
+ val argValue = it.value
244
+ if (argValue == null ) JsonPrimitive (null ) else Json .parseToJsonElement(argValue)
245
+ }
246
+ )
247
+
248
+ internal fun com.google.firebase.vertexai.common.shared.FunctionResponse.toPublic () =
249
+ FunctionResponse (
250
+ name,
251
+ response,
252
+ )
253
+
235
254
internal fun com.google.firebase.vertexai.common.server.CitationSources.toPublic (): Citation {
236
255
val publicationDateAsCalendar =
237
256
publicationDate?.let {
0 commit comments