Releases: oldmanpushcart/dashscope4j
Releases · oldmanpushcart/dashscope4j
3.0.0
2.2.0
- 2.2.0: 语音识别与合成支持
- 新增双工数据交互操作接口
Exchange
,用于支持语音、视频等多模态模型交互 - 支持实时语音识别
- 支持实时语音合成
- 支持音视频转录
- 支持远程、本地Tokenizer
- 优化部分API,存在不向下兼容可能
- 所有对外暴露的
CompletableFuture
变更为CompletionStage
,解决暴露接口功能过于强大的问题 - 增加
HttpApiRequest / Response
和ExchangeApiRequest / Response
的API分层,为了更好地支持多模态数据交互做准备
- 所有对外暴露的
- 新增双工数据交互操作接口
2.1.0
- 2.1.0: 不兼容API修复
- 修复模块中错误的exports,该修复会将模块中不应该暴露的内部api重新收回。本次修复不向下兼容。
- 修复ChatRequest中函数调用因为Message序列化问题丢失PluginCall、Plugin、ToolCall、Tool等信息的BUG
2.0.0
- 2.0.0: 大版本重构。核心API进行不兼容调整和实现重构(请注意),删除1.x.x版本被标记为已废弃的方法
- 重构拦截器接口和实现重构,并添加了流控、重试等拦截器实现
- 调整部分类、API的位置和命名;删除已废弃的方法
- Flow相关实现进行重构
1.4.0
支持请求和应答拦截器
- 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
支持多模态向量计算
// 请求
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
重要更新:支持函数调用
灵积在2024-03-12
放出了函数调用
功能,当前支持的模型是大语言模型qwen-turbo
、qwen-plus
、qwen-max
、qwen-max-longcontext
,
DashScope4j
从1.2.0
版本开始作为Java版SDK首发支持函数调用
的功能。
函数调用是我实际开发中最喜欢的一个功能,它扩展了大模型的能力边界,让AI具备了操纵现实的能力。而之前要做到这些事情我得通过langchain
来实现。
添加依赖
<dependency>
<groupId>io.github.oldmanpushcart</groupId>
<artifactId>dashscope4j</artifactId>
<version>1.2.0</version>
</dependency>
1.1.1
第一个稳定版本,实现了灵积API中的多模态对话、向量嵌入、文生图、插件等功能
DashScope4j
支持以下API功能:
-
对话(Chat)
- 提供用户与灵积进行多模态(图、文)对话。
- 提供用户与灵积进行多模态(图、音)对话。
-
向量(Embeddings)
- 将文本转换为向量表示,用于文本相似度比较、聚类等任务。
-
图像(Images)
- 文生图: 将文本描述转换为相应的图像。
-
插件应用(Plugin)
- OCR插件: 图像理解识别,并对图像内容进行总结概述,输出用户可理解的句子或段落。
- PDF解析插件: 对PDF文件进行解析,提取、理解文本内容。
- 计算器插件: 对用户输入的数学表达式进行计算。
- 文生图插件: 将文本描述转换为相应的图像。
Full Changelog: https://github.com/oldmanpushcart/dashscope4j/commits/1.1.1