Skip to content

Releases: oldmanpushcart/dashscope4j

3.1.2

16 Apr 17:38
401fb37

Choose a tag to compare

  1. 修复Function Call时传递参数为""时,导致解析失败

3.1.1

14 Apr 16:13
b27b263

Choose a tag to compare

Release 3.1.1

  1. 支持按请求设置拦截器
  2. 调整自定义拦截器和系统自带拦截器顺序,系统自带拦截器顺序优先级最高

3.1.0

06 Apr 04:58
88afca8

Choose a tag to compare

发布3.10稳定版

  1. 修复部分问题
  2. 增强部分功能

3.0.0

27 Dec 19:25

Choose a tag to compare

发布3.0.0版本

  1. 对JDK版本的要求从17降级到8
  2. 使用okhttp3代替JDK自带的HttpClient
  3. 使用rxjava3代替JDK自带的Flow
  4. 破坏性重构API

2.2.0

20 Aug 14:43

Choose a tag to compare

  • 2.2.0: 语音识别与合成支持
    • 新增双工数据交互操作接口Exchange,用于支持语音、视频等多模态模型交互
    • 支持实时语音识别
    • 支持实时语音合成
    • 支持音视频转录
    • 支持远程、本地Tokenizer
    • 优化部分API,存在不向下兼容可能
      • 所有对外暴露的CompletableFuture变更为CompletionStage,解决暴露接口功能过于强大的问题
      • 增加HttpApiRequest / ResponseExchangeApiRequest / Response的API分层,为了更好地支持多模态数据交互做准备

2.1.0

27 Jul 10:49
2aff504

Choose a tag to compare

  • 2.1.0: 不兼容API修复
    • 修复模块中错误的exports,该修复会将模块中不应该暴露的内部api重新收回。本次修复不向下兼容。
    • 修复ChatRequest中函数调用因为Message序列化问题丢失PluginCall、Plugin、ToolCall、Tool等信息的BUG

2.0.0

17 Jul 18:25
d054016

Choose a tag to compare

  • 2.0.0: 大版本重构。核心API进行不兼容调整和实现重构(请注意),删除1.x.x版本被标记为已废弃的方法
    • 重构拦截器接口和实现重构,并添加了流控、重试等拦截器实现
    • 调整部分类、API的位置和命名;删除已废弃的方法
    • Flow相关实现进行重构

1.4.0

19 May 18:17

Choose a tag to compare

支持请求和应答拦截器

  • RequestInterceptor: 可以拦截和修改请求
  • ResponseInterceptor: 可以拦截和修改应答

通过DashScopeClient.Builder设置,示例代码

DashScopeClient client = DashScopeClient.newBuilder()
    .ak(AK)
    .executor(executor)
    .requestInterceptors(new RequestInterceptor() {
        
        @Override
        public CompletableFuture<ApiRequest<?>> preHandle(InvocationContext ctx, ApiRequest<?> req) {
            return CompletableFuture.completedFuture(req);
        }
        
    })
    .build();

支持无感使用临时空间

对话多模态向量计算文档分析插件等请求中如果需要解析图片、音频、文档等内容,不再需要提前上传到OSS转换为外网可访问的URL连接。这样极不方便也不安全。

通过灵积平台提供的临时空间可以很好的解决这个问题,但操作起来需要调用额外的api且需要对url进行拼接和替换,略为繁琐。

dashscope4j帮你封装了这个繁琐的操作,你只需要设置内容的时候将本地文件、BufferedImage甚至byte[]直接传入Content,框架会自动识别并帮你完成临时空间上传和转换连接操作。并自带一个缓存避免重复上传。

final var request = ChatRequest.newBuilder()
        .model(ChatModel.QWEN_VL_MAX)
        .option(ChatOptions.ENABLE_INCREMENTAL_OUTPUT, true)
        .user(
                Content.ofImage(new File("C:\\Users\\vlinux\\图片\\image-002.jpeg").toURI()),
                Content.ofText("图片中一共多少辆自行车?")
        )
        .build();

1.3.0

28 Mar 16:24
c919ade

Choose a tag to compare

支持多模态向量计算

// 请求
final var request = MmEmbeddingRequest.newBuilder()
    .model(MmEmbeddingModel.MM_EMBEDDING_ONE_PEACE_V1)
    .option(MmEmbeddingOptions.AUTO_TRUNCATION, true)
    .contents(
        FactorContent.ofAudio(URI.create("https://dashscope.oss-cn-beijing.aliyuncs.com/audios/2channel_16K.wav")),
        FactorContent.ofImage(URI.create("https://ompc-images.oss-cn-hangzhou.aliyuncs.com/image-002.jpeg")),
        FactorContent.ofText("一个帅哥在骑自行车念经"),
        FactorContent.ofText("有两个自行车")
    )
    .build();

// 应答
final var response = client.mmEmbedding(request)
    .async()
    .join();

1.2.0

19 Mar 13:58

Choose a tag to compare

重要更新:支持函数调用

灵积在2024-03-12放出了函数调用功能,当前支持的模型是大语言模型qwen-turboqwen-plusqwen-maxqwen-max-longcontext
DashScope4j1.2.0版本开始作为Java版SDK首发支持函数调用的功能。

函数调用是我实际开发中最喜欢的一个功能,它扩展了大模型的能力边界,让AI具备了操纵现实的能力。而之前要做到这些事情我得通过langchain来实现。

添加依赖

<dependency>
    <groupId>io.github.oldmanpushcart</groupId>
    <artifactId>dashscope4j</artifactId>
    <version>1.2.0</version>
</dependency>