引言
在现代应用程序开发中,结合人工智能(AI)技术变得越来越普遍。在这篇技术博客中,我将展示如何在Android中使用OkHttp和GPT-4o API处理图片和文字输入。通过这个示例,您可以学会如何上传图片,结合文字描述,并从GPT-4o获取响应。
前提条件
在开始之前,请确保您已完成以下准备工作:
- Android Studio: 请确保您已安装最新版本的Android Studio。
- OkHttp: 确保您已在
build.gradle
文件中添加了OkHttp库。 - GPT-4o API Key: 您需要从OpenAI获取一个API密钥。
步骤一:设置OkHttp客户端
首先,创建一个OkHttp客户端并设置超时时间:
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
步骤二:读取图片并转换为Base64
接下来,读取图片文件并将其转换为Base64字符串:
try {
byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath));
String imageBase64 = android.util.Base64.encodeToString(imageBytes, android.util.Base64.DEFAULT);
} catch (IOException e) {
throw new RuntimeException("Failed to read image file", e);
}
步骤三:构建请求体
构建包含文字和图片内容的请求体:
JSONObject prompt = new JSONObject();
prompt.put("role", "user");
JSONObject content = new JSONObject();
content. Put("type", "text");
content. Put("text", "prompt");
JSONObject imageContent = new JSONObject();
imageContent.put("type", "image_url");
JSONObject imageUrl = new JSONObject();
imageUrl.put("url", "data:image/jpeg;base64," + imageBase64);
imageContent.put("image_url", imageUrl);
JSONArray contentArray = new JSONArray();
contentArray.put(content);
contentArray.put(imageContent);
prompt.put("content", contentArray);
JSONArray messages = new JSONArray();
messages.put(prompt);
JSONObject requestBody = new JSONObject();
requestBody.put("model", "gpt-4o");
requestBody.put("messages", messages);
步骤四:发送请求并处理响应
使用OkHttp发送请求并处理响应:
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), requestBody.toString());
Request request = new Request.Builder()
.url(API_URL)
.post(body)
.addHeader("Authorization", "Bearer " + API_KEY)
.build();
try (Response responseText = client.newCall(request).execute()) {
if (!responseText.isSuccessful()) {
throw new IOException("Unexpected response code: " + responseText);
}
String responseBody = responseText.body().string();
JSONObject jsonResponse = new JSONObject(responseBody);
String botResponse = jsonResponse.getJSONArray("choices")
.getJSONObject(0)
.getJSONObject("message")
.getString("content");
System.out.println("Bot response: " + botResponse);
} catch (IOException | JSONException e) {
e.printStackTrace();
}
总结
通过以上步骤,我们展示了如何在Android中使用OkHttp和GPT-4o API处理图片和文字输入。这个示例不仅展示了如何将图片编码为Base64,还展示了如何构建复杂的JSON请求体并处理AI模型的响应。希望这篇博客对您在Android应用中集成AI技术有所帮助。
参考
- OkHttp Documentation
- OpenAI GPT-4 API Documentation