提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

参考了一些下面这个,JAVA版本的接入方式:
https://blog.csdn.net/mng123/article/details/145568328

代码

换成自己申请的deepseek api key,直接调用sendMessage方法传入内容,改写responseCallback 即可与自己的app适配
代码如下:
首先引入okhttp 库

    implementation (libs.okhttp)//网络连接
okhttp = { module = "com.squareup.okhttp3:okhttp", version = "4.12.0" }

然后新建一个类

import android.util.Log
import okhttp3.*
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import java.io.IOException

class DeepSeekApiHelper {
    val API_URL = "https://api.deepseek.com/chat/completions"
    val API_KEY = 自己的key


    fun sendMessage(message: String) {
        val client = OkHttpClient()
        // 创建请求体
        val mediaType = "application/json".toMediaTypeOrNull()
        val jsonBody = "{\n" +
                "        \"model\": \"deepseek-chat\",\n" +
                "        \"messages\": [\n" +
                "          {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n" +
                "          {\"role\": \"user\", \"content\": \"$message\"}\n" +
                "        ],\n" +
                "        \"stream\": false\n" +
                "      }" // 根据API要求构造请求体
        val body: RequestBody = RequestBody.create(mediaType,jsonBody )

        // 创建请求
        val request: Request = Request.Builder()
            .url(API_URL)
            .post(body)
            .addHeader("Authorization", "Bearer $API_KEY")
            .addHeader("Content-Type", "application/json")
            .build() // 发送请求

        val response = client.newCall(request).enqueue(
            responseCallback = object : Callback {
                override fun onFailure(call: Call, e: IOException) {
                    // 处理失败逻辑
                }

                @Throws(IOException::class)
                override fun onResponse(call: Call, response: Response) {
                    response.body.use { responseBody ->
                        if (!response.isSuccessful) {
                            // 处理请求失败
                            throw IOException("DeepSeekApiHelper Unexpected code: $response")
                        }
                        // 处理成功响应
                        
                        checkNotNull(responseBody)
                        val responseData = responseBody.string()
                        Log.d("DeepSeekApiHelper", "uploadLog onResponse: $responseData")
                    }
                }
            }
        )
        Log.e("DeepSeekApiHelper",response.toString())
    }



}





总结

这个jsonBody 的配置比较迷,没有达到一个比较简洁的境界,一开始是准备创建一个Message的数据类,方便不同业务的适配,但是转化为jsonString之后服务器一直回报格式错误,格式这方面的限制比较死,最后还是用字符串拼接的方式来做了,如果有人知道怎么优化,欢迎评论指点下

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐