LangChain4J是什么?
官网地址: https://docs.langchain4j.dev/intro
快速开始:创建你的第一个Chat Demo
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
</dependency>
配置类
@Configuration(proxyBeanMethods = false)
public class ChatLanguageModelConfig {
@Bean
public ChatLanguageModel chatLanguageModel() {
return OpenAiChatModel.builder()
.apiKey(System.getenv("API-KEY")) //配置在环境变变量
.modelName("model-name")
.baseUrl("base-url")
.logRequests(true)
.logResponses(true)
.maxRetries(3) // 默认三次
.maxTokens(500)// 限制响应长度
.timeout(Duration.ofSeconds(15))
.temperature(0.7) // 控制生成随机性
.build();
}
}
控制层
@RestController
@Slf4j
public class ChatLanguageModelController {
@Resource
private ChatLanguageModel chatLanguageModel;
@GetMapping("/v1/prompt")
public String generateV1(@RequestParam(value = "prompt", defaultValue = "你是谁?") String prompt){
String result = chatLanguageModel.generate(prompt);
return result;
}
@GetMapping("/v1/userMessage")
public String generateViaUseMessageV1(@RequestParam(value = "prompt")String prompt){
UserMessage userMessage = UserMessage.from(prompt);
Response<AiMessage> result = chatLanguageModel.generate(userMessage);
return result.toString();
}
}
测试结果
测试地址: http://localhost/v1/userMessage
返回结果
Response {
content = AiMessage { text = "xxxxxxx" toolExecutionRequests = null },
tokenUsage = TokenUsage { inputTokenCount = 11, outputTokenCount = 17,totalTokenCount = 28 },
finishReason = STOP,
metadata = {}
}
注意:tokenUsage 计算消耗的token,包含input和output的
其他参数
参考链接: https://github.com/langchain4j/langchain4j-spring/blob/main/langchain4j-open-ai-spring-boot-starter/src/main/java/dev/langchain4j/openai/spring/AutoConfig.java
一句话
配置最佳实践
- 超时设置:根据网络状况设置合理超时(建议15-30秒)
- 温度参数:
创造性场景:0.7~1.0
确定性答案:0.1~0.3 - 异常处理:建议添加统一异常拦截器(后面可以使用 .listeners(List.of(new XXXListener())))
- 敏感信息:API密钥应通过环境变量注入