当前位置: 首页 > article >正文

Android创建DeepSeek聊天对话

文章目录

    • 背景
    • 参考文档
    • 申请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!";
    }
    @Override
    protected 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不熟悉,花了点时间找错误。因为网上没有找到现成的,所以把结果记录一下。代码很简单,不多解释,这部分应该放在线程了,偷懒就直接用了。


http://www.kler.cn/a/573250.html

相关文章:

  • Xcode 无限循环闪退解决方案
  • web前端可以获取客户端的接入互联网的真实地址吗
  • 烟花燃放安全管控:智能分析网关V4烟火检测技术保障安全
  • 【玩转正则表达式】替换与正则表达式的结合
  • “RStudio UI“快速指南
  • 运维SaltStack面试题及参考答案
  • 神经网络|(十三)|SOM神经网络
  • C++ 将jpg图片变成16位565bmp图片
  • C++并发以及多线程的秘密
  • 为解决局域网IP、DNS切换的Windows BAT脚本
  • Hive-03之传参、常用函数、explode、lateral view、行专列、列转行、UDF
  • 【Stable Diffusion】SD迎来动画革命,AnimateDiff快速出图
  • Linux的系统ip管理
  • maven高级-01.分模块设计与开发
  • C 语 言 --- 猜 数 字 游 戏
  • 数据挖掘校招面经二
  • HarmonyOS 中 Navigation 组件的应用困境与应对策略
  • Checkpoint 模型与Stable Diffusion XL(SDXL)模型的区别
  • 使用 Deepseek + kimi 快速生成PPT
  • 盛铂科技SCP4000射频微波功率计与SPP5000系列脉冲峰值 USB功率计 区别