This commit is contained in:
2025-11-08 18:14:44 +08:00
parent 785134bd68
commit edc250847b
3 changed files with 85 additions and 2 deletions

View File

@@ -1,9 +1,55 @@
package com.metis.llm.engine;
import cn.hutool.core.util.StrUtil;
import com.metis.domain.entity.base.Model;
import com.metis.enums.ModelTypeEnum;
import com.metis.llm.domain.CompletionParams;
import com.metis.llm.domain.LLMChatModeConfig;
import com.metis.llm.domain.LLMEmbeddingModelConfig;
import com.metis.llm.domain.config.OllamaModelConfig;
import com.metis.llm.service.ModelEngine;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.request.ResponseFormat;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.ollama.OllamaChatModel;
import dev.langchain4j.model.ollama.OllamaEmbeddingModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class OllamaModelEngine {
public class OllamaModelEngine implements ModelEngine<OllamaModelConfig> {
@Override
public ModelTypeEnum getType() {
return ModelTypeEnum.OLLAMA;
}
@Override
public ChatModel getChatLanguageModel(Model model, LLMChatModeConfig modelConfig) {
CompletionParams completionParams = modelConfig.getCompletionParams();
ResponseFormat responseFormat = ResponseFormat.JSON;
if (StrUtil.isNotBlank(completionParams.getResponseFormat()) && "text".equals(completionParams.getResponseFormat())) {
responseFormat = ResponseFormat.TEXT;
}
return OllamaChatModel.builder()
.baseUrl(model.getUrl())
.modelName(modelConfig.getModelName())
.modelName(modelConfig.getModelName())
.temperature(completionParams.getTemperature())
.maxRetries(completionParams.getMaxTokens())
.topP(completionParams.getTopP())
.seed(completionParams.getSeed())
.responseFormat(responseFormat)
.build();
}
@Override
public EmbeddingModel getEmbeddingModel(Model model, LLMEmbeddingModelConfig modeConfig) {
return OllamaEmbeddingModel.builder()
.baseUrl(model.getUrl())
.modelName(modeConfig.getModelName())
.build();
}
}

View File

@@ -43,7 +43,7 @@ public class OpenApiModelEngine implements ModelEngine<OpenApiConfig> {
public EmbeddingModel getEmbeddingModel(Model model, LLMEmbeddingModelConfig modelConfig) {
return OpenAiEmbeddingModel.builder()
.apiKey(model.getApiKey())
.baseUrl(modelConfig.getModelName())
.baseUrl(model.getUrl())
.modelName(modelConfig.getModelName())
.build();
}

View File

@@ -0,0 +1,37 @@
package aa;
import dev.langchain4j.http.client.*;
import java.util.HashMap;
import java.util.Map;
import static java.time.Duration.ofSeconds;
public class ModelClient {
public static void main(String[] args) {
String baseUrl = "https://api.siliconflow.cn";
HttpClientBuilder httpClientBuilder = HttpClientBuilderLoader.loadHttpClientBuilder();
HttpClient httpClient = httpClientBuilder
.connectTimeout(ofSeconds(15))
.readTimeout(ofSeconds(60))
.build();
Map<String, String> defaultHeaders = new HashMap<>();
defaultHeaders.put("Authorization", "Bearer sk-nnaoladfdjcybfelzkyhmihhnbbazycemiosghvhxfqujfjl");
HttpRequest httpRequest = HttpRequest.builder()
.method(HttpMethod.GET)
.url(baseUrl, "/v1/models/'Qwen/Qwen2.5-Coder-7B-Instruct'")
// .url(baseUrl, "/v1/models/Qwen2.5-Coder-32B-Instruct")
.addHeader("Content-Type", "application/json")
.addHeaders(defaultHeaders)
.build();
SuccessfulHttpResponse httpResponse = httpClient.execute(httpRequest);
String body = httpResponse.body();
System.out.println(body);
}
}