DeepSeek 刚刚悄然发布了 DeepSeek-V3-0324 模型。这次更新远超预期,不仅性能大幅提升,而且新增了多项实用功能,让开发者和企业用户都为之惊叹。

回顾之前的 DeepSeek R1 版本,尽管能力出色,但仍存在几个明显短板:缺乏函数调用能力、不支持规范化的 JSON 输出。这些功能对于 AI 在实际业务场景中的应用至关重要。

以下是官方朴实无话的更新日志:

中文写作能力测试

提示词:假设你是一名环保专家,最近你发现了一种新的可持续能源技术。请描述这项技术的原理、优势以及对环境的潜在影响。

写作能力有了大幅度提升,毕竟基于R1 ,「左脚踩右脚」

前端开发能力测试

接下来,我测试了它的前端开发能力:

我问了它:技术栈不限制,帮我实现一个网站登录界面.html

DeepSeek V3 函数调用功能

函数调用是这一功能使大语言模型能够根据用户提示,生成调用特定函数的结构化请求,包含函数名称和必要参数。这为 AI 与外部工具、API 的无缝集成提供了强大支持。

举例来说,众所周知大语言模型在处理复杂数学计算时存在局限性。通过函数调用,您可以为模型提供一个”数学工具库”,模型会指示应调用哪个函数以及需要哪些参数。系统执行该函数后,将结果与原始提示一起返回给模型,从而获得完整、准确的回答。

需要明确的是:模型自身不执行函数,它只是指示应该调用什么函数以及如何调用。

函数调用的应用场景包括:

  • 触发外部动作:如发送邮件、控制智能设备
  • 获取实时数据:有效解决 AI 知识时效性问题,如实时搜索或数据库查询
  • 处理复杂计算:解决模型无法直接计算的复杂数据问题

实际应用示例

添加依赖

<dependency>
  <groupId>dev.langchain4j</groupId>
  <artifactId>langchain4j-open-ai</artifactId>
  <version>1.0.0-beta2</version>
</dependency>

创建 AI 服务接口

public interface FunctionAssistant {
    String chat(String message);
}

用注解实现业务逻辑

public class InvoiceHandler {
    @Tool("根据用户提交的开票信息进行开票")
    public String handle(String companyName, String dutyNumber, @P("金额保留两位有效数字") String amount) {
        log.info("companyName =>>>> {} dutyNumber =>>>> {} amount =>>>> {}", companyName, dutyNumber, amount);
        return "开票成功";
    }
}

测试调用效果

@Test
public void test2() {
    ChatLanguageModel chatLanguageModel = OpenAiChatModel.builder()
            .apiKey("sk-")
            .modelName("deepseek-chat")
            .baseUrl("https://api.deepseek.com/v1")
            .logRequests(true)
            .logResponses(true)
            .build();

    FunctionAssistant assistant = AiServices.builder(FunctionAssistant.class)
            .chatLanguageModel(chatLanguageModel)
            .tools(new InvoiceHandler())
            .build();

    String chat = assistant.chat("帮我开具发票,公司名称:深圳市腾讯计算机系统有限公司,税号:91440300734991234A,金额:100.123456");
    System.out.println(chat);
}

总结

从笔者近期 AI 业务的落地实践来看,V3 类聊天模式相比 R1 具备更高的可玩性。本次更新弥补了诸多短板,使其更能深度融入业务流程,我们有理由期待更多 AI 创新案例的出现, 真正赋能业务才有价值