Skip to content

模型集成

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隐私保护,成本低
专业领域特定领域微调模型领域知识丰富

最佳实践

  1. 根据任务选择合适的模型:不同模型有不同的优势和适用场景
  2. 合理设置参数:根据任务需求调整温度、最大令牌数等参数
  3. 监控使用情况:注意 API 调用频率和成本
  4. 考虑隐私和合规:对于敏感数据,考虑使用本地模型
  5. 优化提示词:良好的提示词可以显著提高模型输出质量