Skip to content

Releases: oldmanpushcart/dashscope4j

3.0.0

27 Dec 19:25
Compare
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
Compare
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
Compare
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
Compare
Choose a tag to compare
  • 2.0.0: 大版本重构。核心API进行不兼容调整和实现重构(请注意),删除1.x.x版本被标记为已废弃的方法
    • 重构拦截器接口和实现重构,并添加了流控、重试等拦截器实现
    • 调整部分类、API的位置和命名;删除已废弃的方法
    • Flow相关实现进行重构

1.4.0

19 May 18:17
Compare
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
Compare
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
Compare
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>

1.1.1

29 Feb 15:50
Compare
Choose a tag to compare

第一个稳定版本,实现了灵积API中的多模态对话、向量嵌入、文生图、插件等功能

DashScope4j支持以下API功能:

  • 对话(Chat)

    • 提供用户与灵积进行多模态(图、文)对话。
    • 提供用户与灵积进行多模态(图、音)对话。
  • 向量(Embeddings)

    • 将文本转换为向量表示,用于文本相似度比较、聚类等任务。
  • 图像(Images)

    • 文生图: 将文本描述转换为相应的图像。
  • 插件应用(Plugin)

    • OCR插件: 图像理解识别,并对图像内容进行总结概述,输出用户可理解的句子或段落。
    • PDF解析插件: 对PDF文件进行解析,提取、理解文本内容。
    • 计算器插件: 对用户输入的数学表达式进行计算。
    • 文生图插件: 将文本描述转换为相应的图像。

Full Changelog: https://github.com/oldmanpushcart/dashscope4j/commits/1.1.1