Skip to content
This repository was archived by the owner on Feb 4, 2025. It is now read-only.

Commit d92a27b

Browse files
Merge pull request #2988 from wordpress-mobile/ai-rest-client-add-params
New REST AI client parameters
2 parents 800a21d + 76fed8b commit d92a27b

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/jetpackai/JetpackAIRestClient.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.wordpress.android.fluxc.network.rest.wpcom.WPComGsonRequest.WPComGson
1414
import org.wordpress.android.fluxc.network.rest.wpcom.WPComGsonRequestBuilder
1515
import org.wordpress.android.fluxc.network.rest.wpcom.WPComGsonRequestBuilder.Response
1616
import org.wordpress.android.fluxc.network.rest.wpcom.auth.AccessToken
17+
import org.wordpress.android.fluxc.utils.extensions.putIfNotNull
1718
import javax.inject.Inject
1819
import javax.inject.Named
1920
import javax.inject.Singleton
@@ -55,7 +56,9 @@ class JetpackAIRestClient @Inject constructor(
5556
suspend fun fetchJetpackAITextCompletion(
5657
token: JWTToken,
5758
prompt: String,
58-
feature: String
59+
feature: String,
60+
format: ResponseFormat? = null,
61+
model: String? = null
5962
): JetpackAICompletionsResponse {
6063
val url = WPCOMV2.text_completion.url
6164
val body = mutableMapOf<String, String>()
@@ -64,6 +67,7 @@ class JetpackAIRestClient @Inject constructor(
6467
put("prompt", prompt)
6568
put("feature", feature)
6669
put("_fields", FIELDS_TO_REQUEST)
70+
putIfNotNull("response_format" to format?.value, "model" to model)
6771
}
6872

6973
val response = wpComGsonRequestBuilder.syncPostRequest(
@@ -161,6 +165,11 @@ class JetpackAIRestClient @Inject constructor(
161165
NETWORK_ERROR
162166
}
163167

168+
enum class ResponseFormat(val value: String) {
169+
JSON("json_object"),
170+
TEXT("text")
171+
}
172+
164173
private fun WPComGsonNetworkError.toJetpackAICompletionsError() =
165174
when (type) {
166175
GenericErrorType.TIMEOUT -> JetpackAICompletionsErrorType.TIMEOUT

fluxc/src/main/java/org/wordpress/android/fluxc/store/jetpackai/JetpackAIStore.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import org.wordpress.android.fluxc.network.rest.wpcom.jetpackai.JetpackAIRestCli
88
import org.wordpress.android.fluxc.network.rest.wpcom.jetpackai.JetpackAIRestClient.JetpackAIJWTTokenResponse
99
import org.wordpress.android.fluxc.network.rest.wpcom.jetpackai.JetpackAIRestClient.JetpackAIJWTTokenResponse.Error
1010
import org.wordpress.android.fluxc.network.rest.wpcom.jetpackai.JetpackAIRestClient.JetpackAIJWTTokenResponse.Success
11+
import org.wordpress.android.fluxc.network.rest.wpcom.jetpackai.JetpackAIRestClient.ResponseFormat
1112
import org.wordpress.android.fluxc.tools.CoroutineEngine
1213
import org.wordpress.android.util.AppLog
1314
import javax.inject.Inject
@@ -70,7 +71,9 @@ class JetpackAIStore @Inject constructor(
7071
suspend fun fetchJetpackAICompletions(
7172
site: SiteModel,
7273
prompt: String,
73-
feature: String
74+
feature: String,
75+
responseFormat: ResponseFormat? = null,
76+
model: String? = null
7477
): JetpackAICompletionsResponse = coroutineEngine.withDefaultContext(
7578
tag = AppLog.T.API,
7679
caller = this,
@@ -93,14 +96,20 @@ class JetpackAIStore @Inject constructor(
9396
}
9497
}
9598

96-
val result = jetpackAIRestClient.fetchJetpackAITextCompletion(token, prompt, feature)
99+
val result = jetpackAIRestClient.fetchJetpackAITextCompletion(
100+
token,
101+
prompt,
102+
feature,
103+
responseFormat,
104+
model
105+
)
97106

98107
return@withDefaultContext when {
99108
// Fetch token anew if using existing token returns AUTH_ERROR
100109
result is JetpackAICompletionsResponse.Error && result.type == AUTH_ERROR -> {
101110
// Remove cached token
102111
this@JetpackAIStore.token = null
103-
fetchJetpackAICompletions(site, prompt, feature)
112+
fetchJetpackAICompletions(site, prompt, feature, responseFormat, model)
104113
}
105114

106115
else -> result

0 commit comments

Comments
 (0)