目录

一、问:调用阿里云百炼平台大模型API(java)

二、AI答


一、问:调用阿里云百炼平台大模型API(java)

请问下程序员该如何用好deepseek

package ivyjava2.ai_ai.deepseek;

import java.util.Arrays;

import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import ivyjava2.ai_ai.AIConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * deepseek —— 流式输出、包含思考过程
 *
 */
public class DeepSeekStreamOutTest1 {

    private static final Logger logger = LoggerFactory.getLogger(DeepSeekStreamOutTest1.class);

    private static StringBuilder reasoningContent = new StringBuilder();

    private static StringBuilder finalContent = new StringBuilder();

    private static boolean isFirstPrint = true;

    private static void handleGenerationResult(GenerationResult message) {
        String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
        String content = message.getOutput().getChoices().get(0).getMessage().getContent();

        if (!reasoning.isEmpty()) {

            reasoningContent.append(reasoning);

            if (isFirstPrint) {
                System.out.println("====================思考过程====================");
                isFirstPrint = false;
            }

            System.out.print(reasoning);
        }

        if (!content.isEmpty()) {

            finalContent.append(content);

            if (!isFirstPrint) {
                System.out.println("\n====================完整回复====================");
                isFirstPrint = true;
            }

            System.out.print(content);
        }

    }

    private static GenerationParam buildGenerationParam(Message userMsg) {

        return GenerationParam.builder()
                // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(AIConstant.ALIYUN_API_KEY)

                // 此处以qwen-plus为例,您可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
                .model(AIConstant.ALIYUN_MODEL)

                .messages(Arrays.asList(userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)


                // true 表示增量式流式输出
                //
                // 注:流式输出的内容默认是 false 非增量式(即每次返回的内容都包含之前生成的内容)
                //
                .incrementalOutput(true)
                .build();
    }

    public static void streamCallWithMessage(Generation gen, Message userMsg)
            throws NoApiKeyException, ApiException, InputRequiredException {

        GenerationParam param = buildGenerationParam(userMsg);

        // 【重点】
        Flowable<GenerationResult> result = gen.streamCall(param);

        result.blockingForEach(message -> handleGenerationResult(message));
    }

    //

    public static void main(String[] args) {
        try {
            Generation gen = new Generation();

            Message userMsg = Message.builder()
                    .role(Role.USER.getValue())
                    .content("请问下程序员该如何用好deepseek")
//                    .content("你是谁?")
                    .build();

            streamCallWithMessage(gen, userMsg);

//             打印最终结果
//            if (reasoningContent.length() > 0) {
//                System.out.println("\n====================完整回复====================");
//                System.out.println(finalContent.toString());
//            }

        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            logger.error("An exception occurred: {}", e.getMessage());
        }

        System.exit(0);
    }

}

环境

java:1.8以上版本

模型:deepseek-r1

dashscope SDK的版本 >= 2.18.2

二、AI答

====================思考过程====================

嗯,用户问的是程序员如何用好DeepSeek。首先,我得确认DeepSeek具体指的是什么。因为DeepSeek可能是一个公司,也可能是一个工具或平台。根据之前的对话历史,用户可能指的是深度求索(DeepSeek)公司,或者他们推出的某个AI产品,比如代码生成模型或者智能助手。假设这里是指他们的AI工具,比如类似ChatGPT的编程助手,那么我需要围绕程序员如何利用这个工具来提高效率来展开思考。

首先,程序员可能关心代码生成、问题解答、调试优化、学习资源等方面。需要列举具体的使用场景,比如用自然语言生成代码,或者解释代码错误。然后要考虑如何有效提问,因为好的提示词(prompt)能提高AI的回答质量。比如,明确需求,提供上下文,分步骤询问等。

接下来可能需要涵盖的主要点包括代码相关应用、技术问题解决、学习与开发、工具集成、注意事项等。每个大点下需要细分小点,比如代码生成、代码解释、调试、优化;技术问题的问题排查、算法帮助、技术方案咨询;学习方面的学习新技术、文档解读、面试准备;工具集成可能涉及IDE插件、API使用;注意事项包括验证答案、保护隐私、结合专业知识等。

还要考虑用户可能的深层需求,比如提高编码效率,减少调试时间,学习新技术的方法,或者优化现有代码结构。用户可能是新手程序员,需要学习资源,也可能是有经验的开发者,寻求更高效的开发方式。所以回答需要覆盖不同层次的需求。

另外,需要注意准确性,AI生成的代码可能有错误,所以提醒用户验证和测试。还有隐私问题,避免提交敏感代码。同时,结合官方文档和社区资源,确保信息的全面性。

最后,结构要清晰,分点列出,每个部分有例子或具体建议,让用户容易理解和应用。可能需要检查是否有遗漏的重要点,比如版本控制、自动化测试等,但可能不属于DeepSeek直接相关的内容,所以可能不需要涉及。保持回答的实用性和可操作性,帮助程序员真正用好这个工具提升工作效率。

====================完整回复====================

程序员可以通过以下方式高效利用 DeepSeek 的 AI 工具(如代码助手、智能问答等)提升开发效率:

---

### **一、代码相关场景**
1. **代码生成**  
   - **自然语言转代码**:用口语描述需求(如"用Python写一个快速排序函数"),AI 可直接生成代码框架。
   - **代码补全**:在编写代码时,通过提示词让 AI 补充具体功能模块(如"实现JWT身份验证的中间件")。
   - **示例**:  
     *Prompt*:  
     "用React实现一个可搜索的表格组件,要求支持分页和关键词高亮。"

2. **代码解释**  
   - 粘贴不熟悉的代码,让 AI 解释逻辑(如"这段Go语言的协程代码是如何处理并发的?")。
   - 分析开源项目代码片段,快速理解核心逻辑。

3. **调试与优化**  
   - **错误排查**:粘贴报错信息+代码片段,询问原因(如"这段Python代码抛出`IndexError`,如何修复?")。
   - **性能优化**:输入代码后提问(如"如何将这段Java循环的时间复杂度从O(n²)降到O(n)?")。
   - **代码重构**:请求 AI 简化冗余代码或改进可读性。

---

### **二、技术问题解决**
1. **问题排查**  
   - 描述具体现象(如"Docker容器启动后立即退出"),AI 可提供常见原因及解决步骤。
   - 结合日志信息提问,获取针对性建议。

2. **算法与数据结构**  
   - 请求算法思路(如"如何用动态规划解决背包问题?")。
   - 让 AI 对比不同算法优劣(如"BFS和DFS在路径查找中的适用场景")。

3. **技术方案咨询**  
   - 设计系统时提问(如"如何设计一个高并发的短链生成服务?")。
   - 技术选型建议(如"React vs Vue 在大型后台管理系统中的优缺点")。

---

### **三、学习与开发提效**
1. **学习新技术**  
   - 快速生成学习路径(如"如何系统学习Kubernetes?列出关键知识点和实战项目")。
   - 获取代码示例(如"展示Axios拦截器的典型用法")。

2. **文档处理**  
   - 解释复杂技术文档(如"帮我用通俗语言解释OAuth2.0的授权码流程")。
   - 生成API文档草稿或代码注释。

3. **面试准备**  
   - 模拟技术面试(如"请模拟Java工程师的中级岗位面试,提出5个典型问题并给出答案")。
   - 算法题解析(如"解释LeetCode 215题的快速选择算法")。

---

### **四、工具集成与自动化**
1. **IDE 插件**  
   - 安装官方插件(如VSCode扩展),实现代码实时问答、自动补全。

2. **API 集成**  
   - 调用 DeepSeek API 构建自定义工具(如自动化生成测试用例、代码审查助手)。

3. **脚本自动化**  
   - 生成常用脚本(如"写一个Python脚本批量重命名文件夹中的图片文件")。

---

### **五、注意事项**
1. **验证输出结果**  
   - AI 生成的代码需通过测试和代码审查,避免直接部署生产环境。

2. **提供清晰上下文**  
   - 提问时说明技术栈、环境信息(如"我在使用Spring Boot 3.2时遇到...")。

3. **隐私与安全**  
   - 避免提交公司敏感代码或数据,遵守企业合规要求。

4. **结合官方文档**  
   - 将 AI 建议与官方文档交叉验证,确保技术方案时效性。

---

### **典型使用场景示例**
**场景**:开发一个用户登录功能  
- **步骤1**:提问 → "用Node.js实现JWT身份验证的最佳实践是什么?"  
- **步骤2**:根据 AI 生成的代码框架补充业务逻辑。  
- **步骤3**:粘贴报错信息 → "`Error: secretOrPrivateKey must have a value` 如何解决?"  
- **步骤4**:请求优化建议 → "如何提高这个登录接口的并发处理能力?"

通过结合 DeepSeek 的实时辅助,程序员可显著减少查文档、调试的时间,将更多精力投入核心逻辑设计
 


我是程序员娟娟,

致力将工作中遇到的问题和解决方案记录下来,

分享给更多需要的同行。

如果对你有帮助,不妨点个关注吧!

Logo

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

更多推荐