文章目录
- 背景
- 参考文档
- 申请DeepSeek API KEY(略)
- 代码
- 运行结果
- 小结
背景
想用Android整一个聊天机器人,测试一下功能。
参考文档
申请DeepSeek API KEY(略)
代码
参考文档中的代码已经基本满足要求,主要是返回结果为JSON格式没有解析,内容比较乱,加一些简单的解析即可。
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import java.io.IOException;import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class MainActivity extends AppCompatActivity {private static final String API_KEY = "KEY"; // 替换为你的 DeepSeek API 密钥private DeepSeekApiService apiService;/*Input: msg 发送给AI的信息*//*返回AI的对话结果。注意:DeepSEEK 服务经常没有相应*/String DeepSeekApi(String msg){String strBody = "{\n \"messages\": [\n {\n \"content\": \""+msg+"\",\n \"role\": \"system\"\n },\n {\n \"content\": \""+msg+"\",\n \"role\": \"user\"\n }\n ],\n \"model\": \"deepseek-chat\",\n \"frequency_penalty\": 0,\n \"max_tokens\": 2048,\n \"presence_penalty\": 0,\n \"response_format\": {\n \"type\": \"text\"\n },\n \"stop\": null,\n \"stream\": false,\n \"stream_options\": null,\n \"temperature\": 1,\n \"top_p\": 1,\n \"tools\": null,\n \"tool_choice\": \"none\",\n \"logprobs\": false,\n \"top_logprobs\": null\n}";OkHttpClient client = new OkHttpClient();MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(mediaType, strBody);Request request = new Request.Builder().url("https://api.deepseek.com/chat/completions").post(body).addHeader("Authorization", "Bearer " + API_KEY).addHeader("Content-Type", "application/json").build();try (Response response = client.newCall(request).execute()) {if (response.isSuccessful() && response.body() != null) {String responseBody = response.body().string();JSONObject jsonResponse = new JSONObject(responseBody);// System.out.println(response.body().string());JSONArray messages = jsonResponse.getJSONArray("choices");int len = messages.length();JSONObject message = messages.getJSONObject(0);String fieldValue = message.getString("message");JSONObject jsonResponse1 = new JSONObject(fieldValue);fieldValue = jsonResponse1.getString("content");return fieldValue;}else{Log.i("DeepSeek","服务器忙碌");}} catch (IOException | JSONException e) {e.printStackTrace();}return "Failed!";}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);String res = DeepSeekApi("你是谁?简要回答");Log.i("DeepSeek",res);}
}
运行结果
小结
没什么难度,时间主要寻找一个Android下可用的连接代码。好些代码测试过发现已经过期,最后在DS的API文档里面找到了可用的代码。JSON不熟悉,花了点时间找错误。因为网上没有找到现成的,所以把结果记录一下。代码很简单,不多解释,这部分应该放在线程了,偷懒就直接用了。