Appearance
核心概念
语言模型 (LLMs) 基础
语言模型是 LangChain 4J 的核心组件,负责生成文本响应。LangChain 4J 支持多种语言模型,包括:
- OpenAI 模型:如 GPT-3.5、GPT-4
- Hugging Face 模型:如 Llama 2、Falcon
- 本地模型:如 Llama 2、Mistral
模型配置
每种模型都有其特定的配置选项,如温度、最大令牌数等:
java
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-3.5-turbo")
.temperature(0.7)
.maxTokens(1000)
.build();提示词工程 (Prompt Engineering)
提示词工程是设计和优化提示词以获得更好的模型响应的过程。LangChain 4J 提供了提示词模板来简化这一过程:
提示词模板
提示词模板允许您创建可重用的提示词结构:
java
PromptTemplate promptTemplate = PromptTemplate.from("请解释 {topic} 的概念");
String prompt = promptTemplate.apply("量子计算");链 (Chains) 概念
链是将多个组件组合在一起的方式,形成一个完整的处理流程:
基础链
基础链将提示词模板和模型组合在一起:
java
PromptTemplate promptTemplate = PromptTemplate.from("请解释 {topic} 的概念");
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.build();
LlmChain chain = LlmChain.builder()
.promptTemplate(promptTemplate)
.model(model)
.build();
String response = chain.run("量子计算");复合链
复合链将多个链组合在一起,形成更复杂的处理流程:
- 顺序链:按顺序执行多个链
- 并行链:并行执行多个链
- 分支链:根据条件选择不同的链
代理 (Agents) 概念
代理是能够自主决策和执行操作的组件,它可以使用工具来完成任务:
工具
工具是代理可以使用的功能,如搜索、计算等:
java
Tool searchTool = Tool.builder()
.name("search")
.description("用于搜索网络信息")
.function(input -> searchWeb(input))
.build();代理执行
代理使用工具来完成任务:
java
Agent agent = Agent.builder()
.model(model)
.tools(Arrays.asList(searchTool, calculatorTool))
.build();
String response = agent.execute("北京今天的天气怎么样?");记忆 (Memory) 机制
记忆机制允许应用程序记住之前的交互,使对话更加连贯:
会话记忆
会话记忆存储当前会话的历史记录:
java
ChatMemory chatMemory = MessageWindowChatMemory.builder()
.maxMessages(10)
.build();
ChatLanguageModel chatModel = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.build();
ChatLanguageModelWithMemory modelWithMemory = ChatLanguageModelWithMemory.builder()
.chatLanguageModel(chatModel)
.chatMemory(chatMemory)
.build();中间件 (Middlewares) 概念
中间件是在请求和响应之间执行的组件,可以用于日志记录、监控、错误处理等:
中间件链
中间件链按顺序执行多个中间件:
java
MiddlewareChain middlewareChain = MiddlewareChain.builder()
.addMiddleware(new LoggingMiddleware())
.addMiddleware(new MonitoringMiddleware())
.addMiddleware(new ErrorHandlingMiddleware())
.build();
ChatLanguageModel modelWithMiddleware = ChatLanguageModelWithMiddleware.builder()
.chatLanguageModel(chatModel)
.middlewareChain(middlewareChain)
.build();总结
理解这些核心概念是使用 LangChain 4J 构建复杂应用的基础。在后续章节中,我们将深入探讨每个概念的具体实现和应用场景。