更新时间:2024-10-16 GMT+08:00
分享

配置SDK

基础配置项

SDK依赖的配置项主要通过读取llm.properties配置文件;如果配置文件名不为llm.properties,需要在项目中主动设置,方法如下:

  1. 在resources路径下,创建llm.properties文件,并根据实际需要配置相应的值。
  2. 如果需要自定义配置文件名,可以参考以下代码设置。
    // 建议在业务项目入口处配置
    // 不需要添加.properties后缀
    ConfigLoadUtil.setBaseName("application");
  3. 完整配置项如下:

    配置项中的密码等字段建议在配置文件或者环境变量中密文存放,使用时解密,确保安全,详见配置文件敏感信息加密配置

    ################################ GENERIC CONFIG ###############################
    
    ## User-defined Prompt.
    #
    sdk.prompt.path=
    
    ## Proxy.
    # Examples: http://127.0.0.1:8000 ;
    #
    # sdk.proxy.enabled=
    # sdk.proxy.url=
    # sdk.proxy.user=
    # sdk.proxy.password=
    
    ## Generic IAM info. This config is used when the specified IAM is not configured.
    ## Either user password authentication or AK/SK authentication.
    #
    sdk.iam.url=
    sdk.iam.domain=
    sdk.iam.user=
    sdk.iam.password=
    sdk.iam.project=
    sdk.iam.ak=
    sdk.iam.sk=
    sdk.iam.disabled=
    
    
    ################################ LLM ###############################
    
    ## Pangu
    # Examples: https://{endPoint}/v1/{projectId}/deployments/{deploymentId} ;
    #
    sdk.llm.pangu.url=
    ## If necessary, you can specify the IAM configuration.
    # sdk.llm.pangu.iam.url=
    # sdk.llm.pangu.iam.domain=
    # sdk.llm.pangu.iam.user=
    # sdk.llm.pangu.iam.password=
    # sdk.llm.pangu.iam.project=
    # sdk.llm.pangu.iam.disabled=
    ## If necessary, you can specify the proxy status.
    # sdk.llm.pangu.proxy.enabled=
    
    ## Gallery
    # Examples: https://{endPoint}/v1/infers/{deploymentId} ;
    #
    sdk.llm.gallery.url=
    ## If necessary, you can specify the IAM configuration.
    # sdk.llm.gallery.iam.url=
    # sdk.llm.gallery.iam.domain=
    # sdk.llm.gallery.iam.user=
    # sdk.llm.gallery.iam.password=
    # sdk.llm.gallery.iam.project=
    # sdk.llm.gallery.iam.disabled=
    ## If necessary, you can specify the proxy status.
    # sdk.llm.gallery.proxy.enabled=
    
    
    ################################ EMBEDDINGS ###############################
    
    ## CSS
    # Examples: https://{endPoint}/v1/{projectId}/applications/{appId}/{modelVersion} ;
    #
    sdk.embedding.css.url=
    ## If necessary, you can specify the IAM configuration.
    # sdk.embedding.css.iam.url=
    # sdk.embedding.css.iam.domain=
    # sdk.embedding.css.iam.user=
    # sdk.embedding.css.iam.password=
    # sdk.embedding.css.iam.project=
    # sdk.embedding.css.iam.disabled=
    ## If necessary, you can specify the proxy status.
    # sdk.embedding.css.proxy.enabled=
    
    
    ################################ MEMORY ###############################
    
    ## CSS or ES
    # Examples: http://127.0.0.1:9200,http://127.0.0.2:9200 ;
    #
    sdk.memory.css.url=
    sdk.memory.css.user=
    sdk.memory.css.password=
    
    ## DCS or Redis
    # Examples: 127.0.0.1:6379 ;
    #
    # sdk.memory.dcs.url=
    # sdk.memory.dcs.user=
    # sdk.memory.dcs.password=
    
    ## RDS or Mysql
    # Examples: jdbc:mariadb://127.0.0.1:3306/sdk?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai ; 
    #
    # sdk.memory.rds.url=
    # sdk.memory.rds.user=
    # sdk.memory.rds.password=
    # sdk.memory.rds.poolSize=
    
    
    ################################ DOC SPLIT ###############################
    
    ## CSS
    # Examples: https://{endPoint}/v1/{projectId}/applications/{appId} ;
    #
    # sdk.doc.split.css.url=
    # sdk.doc.split.css.filepath=
    # sdk.doc.split.css.mode=
    ## If necessary, you can specify the IAM configuration.
    # sdk.doc.split.css.iam.url=
    # sdk.doc.split.css.iam.domain=
    # sdk.doc.split.css.iam.user=
    # sdk.doc.split.css.iam.password=
    # sdk.doc.split.css.iam.project=
    # sdk.doc.split.css.iam.disabled=
    ## If necessary, you can specify the proxy status.
    # sdk.doc.split.css.proxy.enabled=

日志打印配置

SDK日志采用slf4j框架,业务项目中可以使用logback、log4j、slf4j默认等具体实现(实现任一即可)。

  • 通过logback实现。
    1. 参考以下代码在pom文件中引入logback相关依赖(建议 1.3.1--1.3.8 版本)。
      <dependency>
      	<groupId>ch.qos.logback</groupId>
      	<artifactId>logback-classic</artifactId>
      	<version>1.3.8</version>
      </dependency>
      <dependency>
      	<groupId>ch.qos.logback</groupId>
      	<artifactId>logback-core</artifactId>
      	<version>1.3.8</version>
      </dependency>
    2. 在resource目录下创建logback.xml,用于配置日志级别、格式、输出位置等,示例如下:
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
              <encoder>
                  <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
              </encoder>
          </appender>
          <root level="DEBUG">
              <appender-ref ref="CONSOLE" />
          </root>
      </configuration>
  • 通过log4j实现
    1. 参考以下代码在pom文件中引入log4j适配slf4j依赖(建议 2.0.7 版本)。
      <dependency>
      	<groupId>org.slf4j</groupId>
      	<artifactId>slf4j-log4j12</artifactId>
      	<version>2.0.7</version>
      </dependency>
    2. 在resource目录下创建log4j.xml,用于配置日志级别、格式、输出位置等,示例如下:
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
      <log4j:configuration>
          <appender name="console" class="org.apache.log4j.ConsoleAppender">
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
              </layout>
          </appender>
          <root>
             org.slf4j <priority value="debug" />
              <appender-ref ref="console" />
          </root>
      </log4j:configuration>
  • 通过slf4j simple实现
    1. 参考以下代码在pom文件中引入依赖。
      <dependency>
      	<groupId>org.slf4j</groupId>
      	<artifactId>slf4j-simple</artifactId>
      	<version>1.7.36</version>
      </dependency>
    2. 在resource目录下创建simplelogger.properties配置文件,示例如下:
      org.slf4j.simpleLogger.defaultLogLevel=DEBUG
      org.slf4j.simpleLogger.log.org.apache.hc.client5=INFO
      org.slf4j.simpleLogger.showDateTime=true
      org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss
      org.slf4j.simpleLogger.showThreadName=true
      org.slf4j.simpleLogger.showLogName=true
      org.slf4j.simpleLogger.logFile=System.out
      #org.slf4j.simpleLogger.showShortLogName=false

配置文件敏感信息加密配置

配置项中的密码等字段需要加密存储时,可以自定义实现解密方法。

  • 实现解密类
    // 配置类实现
    public class CryptoCustom implements ConfigCryptor {
        @Override
        public String decrypt(String customTag, String encryptedValue) throws DecryptFailedException {
            // todo
        }
    }
  • 配置项中指定解密类
    # 配置项指定解密类
    sdk.crypto.implementation.path=CryptoCustom
  • 配置项中可正常配置密文,示例如下
    # 配置项示例:
    sdk.llm.iam.iamPwd={Crypto.customTag}encryptedvalue

相关文档