001package dev.tinyflow.core.parser.impl; 002 003import com.alibaba.fastjson.JSONObject; 004import dev.tinyflow.core.chain.Parameter; 005import dev.tinyflow.core.llm.Llm; 006import dev.tinyflow.core.node.LlmNode; 007import dev.tinyflow.core.parser.BaseNodeParser; 008 009import java.util.List; 010 011public class LlmNodeParser extends BaseNodeParser<LlmNode> { 012 013 @Override 014 public LlmNode doParse(JSONObject root, JSONObject data, JSONObject chainJSONObject) { 015 LlmNode llmNode = new LlmNode(); 016 llmNode.setLlmId(data.getString("llmId")); 017 llmNode.setUserPrompt(data.getString("userPrompt")); 018 llmNode.setSystemPrompt(data.getString("systemPrompt")); 019 llmNode.setOutType(data.getString("outType")); 020 llmNode.setJsonSchema(data.getString("jsonSchema")); 021 022 023 Llm.ChatOptions chatOptions = new Llm.ChatOptions(); 024 chatOptions.setTopK(data.containsKey("topK") ? data.getInteger("topK") : 10); 025 chatOptions.setTopP(data.containsKey("topP") ? data.getFloat("topP") : 0.8F); 026 chatOptions.setTemperature(data.containsKey("temperature") ? data.getFloat("temperature") : 0.5F); 027 llmNode.setChatOptions(chatOptions); 028 029// LlmProvider llmProvider = tinyflow.getLlmProvider(); 030// if (llmProvider != null) { 031// Llm llm = llmProvider.getLlm(data.getString("llmId")); 032// llmNode.setLlm(llm); 033// } 034 035 // 支持图片识别输入 036 List<Parameter> images = getParameters(data, "images"); 037 llmNode.setImages(images); 038 039 return llmNode; 040 } 041}