//package com.ruoyi.aicall.utils;
//
//import com.openai.client.OpenAIClient;
//import com.openai.models.*;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.PostConstruct;
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//@Component
//public class OpenAIChatClient {
//
//    private OpenAIClient client;
//
//    @Value("${openai.api-key}")
//    private String apiKey;
//
//    @Value("${openai.model:gpt-4o}")
//    private String defaultModel;
//
//    @PostConstruct
//    public void init() {
//        this.client = OpenAIOkHttpClient.builder()
//                .apiKey(apiKey)
//                .build();
//    }
//
//    // 简单对话
//    public String simpleChat(String message) {
//        List<Map<String, String>> messages = new ArrayList<Map<String, String>>();
//        Map<String, String> msg = Collections.singletonMap("content", message);
//        // 注意：singletonMap 不可修改，需要重新构建
//        messages.add(Collections.<String, String>singletonMap("role", "user"));
//        // 实际应该使用 HashMap
//        return chatWithHistory(buildMessages("user", message));
//    }
//
//    // 构建消息列表辅助方法
//    private List<Map<String, String>> buildMessages(String role, String content) {
//        Map<String, String> message = new java.util.HashMap<String, String>();
//        message.put("role", role);
//        message.put("content", content);
//
//        List<Map<String, String>> messages = new ArrayList<Map<String, String>>();
//        messages.add(message);
//        return messages;
//    }
//
//    // 带上下文的对话（Java 8 Stream）
//    public String chatWithHistory(List<Map<String, String>> messages) {
//        List<ChatCompletionMessageParam> params = messages.stream()
//                .map(msg -> {
//                    ChatCompletionUserMessageParam userMsg = ChatCompletionUserMessageParam.builder()
//                            .content(msg.get("content"))
//                            .build();
//                    return ChatCompletionMessageParam.ofChatCompletionUserMessageParam(userMsg);
//                })
//                .collect(Collectors.<ChatCompletionMessageParam>toList()); // 显式类型指定
//
//        ChatCompletionCreateParams createParams = ChatCompletionCreateParams.builder()
//                .model(defaultModel)
//                .messages(params)
//                .temperature(0.7)
//                .maxTokens(2000)
//                .build();
//
//        ChatCompletion completion = client.chat().completions().create(createParams);
//
//        // Java 8 安全取值
//        if (completion.choices() != null && !completion.choices().isEmpty()) {
//            ChatCompletion.Choice choice = completion.choices().get(0);
//            if (choice.message() != null && choice.message().content().isPresent()) {
//                return choice.message().content().get();
//            }
//        }
//        throw new RuntimeException("No response from OpenAI");
//    }
//
//    // 带系统提示的对话
//    public String chatWithSystem(String systemPrompt, String userMessage) {
//        List<ChatCompletionMessageParam> messages = new ArrayList<ChatCompletionMessageParam>();
//
//        // 系统消息
//        ChatCompletionSystemMessageParam systemMsg = ChatCompletionSystemMessageParam.builder()
//                .content(systemPrompt)
//                .build();
//        messages.add(ChatCompletionMessageParam.ofChatCompletionSystemMessageParam(systemMsg));
//
//        // 用户消息
//        ChatCompletionUserMessageParam userMsg = ChatCompletionUserMessageParam.builder()
//                .content(userMessage)
//                .build();
//        messages.add(ChatCompletionMessageParam.ofChatCompletionUserMessageParam(userMsg));
//
//        ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
//                .model(defaultModel)
//                .messages(messages)
//                .build();
//
//        ChatCompletion completion = client.chat().completions().create(params);
//
//        return extractContent(completion);
//    }
//
//    private String extractContent(ChatCompletion completion) {
//        if (completion.choices() != null && !completion.choices().isEmpty()) {
//            ChatCompletion.Choice choice = completion.choices().get(0);
//            if (choice.message() != null && choice.message().content().isPresent()) {
//                return choice.message().content().get();
//            }
//        }
//        return "";
//    }
//}
