Appearance
模型集成
OpenAI 集成
LangChain 4J 提供了与 OpenAI 模型的无缝集成,支持 GPT-3.5、GPT-4 等模型:
配置与使用
java
import dev.langchain4j.model.openai.OpenAiChatModel;
// 创建 OpenAI 模型实例
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-3.5-turbo")
.temperature(0.7)
.maxTokens(1000)
.build();
// 生成文本
String response = model.generate("请解释量子计算的概念");
System.out.println(response);流式响应
支持流式响应,实时获取模型输出:
java
model.generate("请解释量子计算的概念", new StreamingResponseHandler<String>() {
@Override
public void onNext(String token) {
System.out.print(token);
}
@Override
public void onComplete() {
System.out.println("\n完成");
}
@Override
public void onError(Throwable error) {
System.err.println("错误: " + error.getMessage());
}
});Hugging Face 模型
LangChain 4J 支持集成 Hugging Face 模型,包括托管模型和本地模型:
托管模型
java
import dev.langchain4j.model.huggingface.HuggingFaceChatModel;
HuggingFaceChatModel model = HuggingFaceChatModel.builder()
.accessToken(System.getenv("HUGGING_FACE_ACCESS_TOKEN"))
.modelId("meta-llama/Llama-2-7b-chat-hf")
.build();
String response = model.generate("请解释量子计算的概念");
System.out.println(response);本地模型
使用 Hugging Face 本地推理 API:
java
import dev.langchain4j.model.huggingface.HuggingFaceLocalChatModel;
HuggingFaceLocalChatModel model = HuggingFaceLocalChatModel.builder()
.modelId("meta-llama/Llama-2-7b-chat-hf")
.temperature(0.7)
.build();
String response = model.generate("请解释量子计算的概念");
System.out.println(response);本地模型部署
LangChain 4J 支持部署和使用本地模型,如 Llama 2、Mistral 等:
Ollama 集成
使用 Ollama 运行本地模型:
java
import dev.langchain4j.model.ollama.OllamaChatModel;
OllamaChatModel model = OllamaChatModel.builder()
.baseUrl("http://localhost:11434")
.modelName("llama2")
.temperature(0.7)
.build();
String response = model.generate("请解释量子计算的概念");
System.out.println(response);vLLM 集成
使用 vLLM 部署高性能本地模型:
java
import dev.langchain4j.model.vllm.VllmChatModel;
VllmChatModel model = VllmChatModel.builder()
.baseUrl("http://localhost:8000")
.modelName("meta-llama/Llama-2-7b-chat-hf")
.temperature(0.7)
.build();
String response = model.generate("请解释量子计算的概念");
System.out.println(response);模型参数调优
不同的模型参数会影响模型的输出质量和行为:
温度 (Temperature)
控制输出的随机性:
- 低温度 (0.1-0.3):输出更加确定和集中
- 中温度 (0.5-0.7):平衡确定性和创造性
- 高温度 (0.9-1.0):输出更加随机和创造性
最大令牌数 (Max Tokens)
控制输出的长度:
- 根据任务需求设置适当的最大令牌数
- 过长的输出可能会导致成本增加和响应时间延长
其他参数
- Top-p:控制词汇的多样性
- Frequency penalty:减少重复内容
- Presence penalty:鼓励新主题
模型选择指南
根据不同的需求选择合适的模型:
| 需求 | 推荐模型 | 优势 |
|---|---|---|
| 通用对话 | GPT-3.5-turbo | 平衡成本和性能 |
| 复杂推理 | GPT-4 | 更高的推理能力 |
| 代码生成 | GPT-4 | 更好的代码理解和生成 |
| 多语言支持 | GPT-4 | 更好的多语言能力 |
| 本地部署 | Llama 2 | 隐私保护,成本低 |
| 专业领域 | 特定领域微调模型 | 领域知识丰富 |
最佳实践
- 根据任务选择合适的模型:不同模型有不同的优势和适用场景
- 合理设置参数:根据任务需求调整温度、最大令牌数等参数
- 监控使用情况:注意 API 调用频率和成本
- 考虑隐私和合规:对于敏感数据,考虑使用本地模型
- 优化提示词:良好的提示词可以显著提高模型输出质量