iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Mobile Development

用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統系列 第 29

Day29 在Android Studio上使用Open Ai的Api,讓GPT也在你的專案中

  • 分享至 

  • xImage
  •  

隨著人工智慧的迅速發展,將 AI 整合入應用程式的需求越來越高。在這篇文章中,我們將學習如何在 Android Studio 上使用 OpenAI 的 API,將 GPT 整合進你的專案中,並讓它為使用者提供智能對話和建議

先決條件

OpenAI API 金鑰:前往 OpenAI 的官網 註冊並獲取 API 金鑰。

設置 Gradle 環境

在你的專案中的 build.gradle (Module: app) 文件中添加 OkHttp 和 JSON 處理的依賴。

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.9.3'
    implementation 'org.json:json:20210307' // 用於處理 JSON
}

在 AndroidManifest.xml 中添加網絡訪問的權限,確保你的應用可以訪問互聯網。

<uses-permission android:name="android.permission.INTERNET"/>

接下來,創建 API 請求的函數:

public class MainActivity extends AppCompatActivity {
    
    private static final String API_KEY = "你的_API_金鑰"; // 將這裡替換成你的 API 金鑰
    private static final String OPENAI_API_URL = "https://api.openai.com/v1/chat/completions";

    private EditText userInput;
    private TextView resultTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        userInput = findViewById(R.id.userInput);
        resultTextView = findViewById(R.id.resultTextView);
        Button submitButton = findViewById(R.id.submitButton);

        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String inputText = userInput.getText().toString();
                if (!inputText.isEmpty()) {
                    callOpenAI(inputText);
                }
            }
        });
    }

    private void callOpenAI(String input) {
        OkHttpClient client = new OkHttpClient();

        MediaType mediaType = MediaType.parse("application/json");
        JSONObject jsonBody = new JSONObject();
        try {
            jsonBody.put("model", "gpt-3.5-turbo");
            JSONArray messages = new JSONArray();
            JSONObject message = new JSONObject();
            message.put("role", "user");
            message.put("content", input);
            messages.put(message);
            jsonBody.put("messages", messages);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        RequestBody body = RequestBody.create(mediaType, jsonBody.toString());
        Request request = new Request.Builder()
                .url(OPENAI_API_URL)
                .post(body)
                .addHeader("Content-Type", "application/json")
                .addHeader("Authorization", "Bearer " + API_KEY)
                .build();

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful() && response.body() != null) {
                    String responseData = response.body().string();
                    parseOpenAIResponse(responseData);
                }
            }
        });
    }

    private void parseOpenAIResponse(String responseData) {
        try {
            JSONObject jsonResponse = new JSONObject(responseData);
            String aiResponse = jsonResponse.getJSONArray("choices").getJSONObject(0)
                    .getJSONObject("message").getString("content");
            runOnUiThread(() -> resultTextView.setText(aiResponse));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

在 res/layout/activity_main.xml 中設計簡單的 UI,讓用戶能夠輸入問題並顯示 GPT 的返回結果。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/userInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="請輸入你的問題" />

    <Button
        android:id="@+id/submitButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交" />

    <TextView
        android:id="@+id/resultTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="GPT的回答將顯示在這裡"
        android:paddingTop="16dp" />
</LinearLayout>

讓 GPT 可以在你的應用程式中與用戶進行互動。隨著時間的推進,你可以根據需求進一步來擴展功能,像是添加上下文記憶、自動回應、或與其他 API 的結合等。

這只是一個基本的開始,探索人工智慧的更多潛力和應用是非常值得的!祝你在開發中取得成功!


上一篇
Day28 API Gateway的實作:如何設計和實作API Gateway以提升後端系統的效能和安全性
下一篇
Day30 結語
系列文
用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言