日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

java sdk最佳實踐

本文為您介紹DashScope java SDK最佳實踐。

查詢SDK最新版本

https://oss.sonatype.org/#nexus-search;quick~dashscope

最佳實踐

SDK API對象,例如Generation不是線程安全的,您不應該并發使用同一個對象。

因為每一個API對象都對應著一條網絡鏈接,因此為了效率,您應盡可能復用已創建出來的API對象,例如Generation,避免不斷創建造成的開銷,通常可以通過資源池來管理,下面是一個簡單的示例,供參考。

對象池示例(org.apache.commons:commons-pool2)

import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import com.alibaba.dashscope.aigc.generation.Generation;

public class PooledDashScopeObjectFactory extends BasePooledObjectFactory<Generation> {

    @Override
    public Generation create() throws Exception {
        return new Generation();
    }

    @Override
    public PooledObject<Generation> wrap(Generation obj) {
        return new DefaultPooledObject<>(obj);
    }    
}

對象池使用

import java.util.Arrays;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
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;

public class PooledDashScopeObjectUsage {
    public static void main(String[] args) throws Exception {
        PooledDashScopeObjectFactory pooledDashScopeObjectFactory =
                new PooledDashScopeObjectFactory();
        GenericObjectPoolConfig<Generation> config = new GenericObjectPoolConfig<>();
        // 對于語音服務,websocket協議,保持下面值相同
        config.setMaxTotal(32);
        config.setMaxIdle(32);
        config.setMinIdle(32);
        GenericObjectPool<Generation> generationPool =
                new GenericObjectPool<>(pooledDashScopeObjectFactory, config);
        Generation gen = null;
        try {
            Message systemMsg = Message.builder().role(Role.SYSTEM.getValue())
                    .content("You are a helpful assistant.").build();
            Message userMsg = Message.builder().role(Role.USER.getValue()).content("你好").build();
            GenerationParam param = GenerationParam.builder().model("qwen-plus")
                    .messages(Arrays.asList(systemMsg, userMsg))
                    .resultFormat(GenerationParam.ResultFormat.MESSAGE).topP(0.8).enableSearch(true)
                    .build();
            gen = generationPool.borrowObject();
            GenerationResult result = gen.call(param);
            System.out.println(result);
        } finally {
            if (gen != null) {
                generationPool.returnObject(gen);
            }
        }
        System.out.println("completed");
        generationPool.close();
    }

}

連接配置

底層使用OkHttp庫管理連接,您可以通過代碼和環境變量來配置連接相關參數,通常情況下您不需要修改任何參數,請根據需求謹慎修改。

重要

以下內容適用于java sdk 2.12.0及之后版本!

通過代碼配置連接參數

Constants.connectionConfigurations = ConnectionConfigurations.builder()
        .connectTimeout(Duration.ofSeconds(120))  // set connection timeout, default 120s
        .readTimeout(Duration.ofSeconds(300)) // set read timeout, default 300s
        .writeTimeout(Duration.ofSeconds(60)) // set read timeout, default 60s
        .connectionIdleTimeout(Duration.ofSeconds(300)) // connection pool idle timeout, default 300s
        .connectionPoolSize(32) // idle connections in the okhttp connection pool.
        .maximumAsyncRequests(32)  // async requests limit. 
        .maximumAsyncRequestsPerHost(32) // async request host limit.
        .proxyHost("The http proxy host") // set proxy host, if set will use proxy. default null.
        .proxyPort(443) // set proxy port, default 443
        .proxyAuthenticator(null) // you can customize you proxy authenticator. default null.
        .build();
// 更多 connectionPoolSize and connectionIdleTimeout, 可以參考 
// ref: https://square.github.io/okhttp/3.x/okhttp/okhttp3/ConnectionPool.html
// maximumAsyncRequests and maximumAsyncRequestsPerHost 只對streamCall, audio相關服務,以及您自行設置
// 的使用websocket連接對象,詳細參考:https://square.github.io/okhttp/3.x/okhttp/okhttp3/Dispatcher.html

通過環境變量配置

詳細信息參考代碼說明。

環境變量

說明

DASHSCOPE_PROXY_HOST

配置代理host

DASHSCOPE_PROXY_PORT

配置代理port

DASHSCOPE_CONNECTION_POOL_SIZE

配置connection pool中idle 連接數。

說明

根據您的負載情況配置,一般配置成流量低峰時并發數,最高并發數目前沒有限制。

超過idle數的空閑連接將在DASHSCOPE_CONNECTION_IDLE_TIME后釋放。

建議您配置一個較小的值,同時將DASHSCOPE_CONNECTION_IDLE_TIME配置一個相對小的值,比如5s。

DASHSCOPE_CONNECTION_IDLE_TIME

配置idle time,與服務端的鏈接將在idle time后斷開。

DASHSCOPE_MAXIMUM_ASYNC_REQUESTS

配置最大異步請求數。

異步請求用于流式流式輸出以及websocket請求,語音服務,流式請求,需要根據您的負載配置配置合適的值,參考

DASHSCOPE_MAXIMUM_ASYNC_REQUESTS_PER_HOST

配置單host最大異步請求數,host范圍內異步請求數。

DASHSCOPE_WRITE_TIMEOUT

配置write timeout

DASHSCOPE_READ_TIMEOUT

配置 read timeout

DASHSCOPE_CONNECTION_TIMEOUT

配置connection timeout

更早版本配置

對于2.12.0之前版本,連接connectionPoolSize,maximumAsyncRequests,maximumAsyncRequestsPerHost統一通過環境變量DASHSCOPE_CONNECTION_POOL_SIZE配置。