# 简单对话

## 示例代码

```java
public static void main(String[] args) {
    Llm llm = new OpenAILlm.of("sk-rts5NF6n*******");

    Prompt prompt = new SimplePrompt("what is your name?");
    String response = llm.chat(prompt);

    System.out.println(response);
}
```
## 流式请求

```java
void streamChat(String systemMessage,String userMessage){
        //创建大模型提示词输入，更多的提示词类型请参考文档“Prompt 提示词”部分。
        TextPrompt textPrompt = new TextPrompt();
        //创建系统提示词（可选）
        SystemMessage sysMsg = new SystemMessage();
        sysMsg.setContent(systemMessage);
        textPrompt.setSystemMessage(sysMsg);
        //传入用户问题
        textPrompt.setContent(userMessage);
        //模型选项（可选）
        ChatOptions chatOptions = new ChatOptions();
        chatOptions.setModel("deepseek-r1:32b"); //设置模型ID，根据使用的LLM模型提供方进行配置
        chatOptions.setTemperature(0.65F); //模型温度
        chatOptions.setMaxTokens(4096); //模型可接收上下文长度，请根据实际进行配置。
        ... //更多配置参考ChatOptions提供的方法。
        //创建流式监听器,建议单独管理。
        StreamResponseListener listener = new StreamResponseListener() {
            @Override
            public void onMessage(ChatContext context, AiMessageResponse response) {
                //在这里来处理模型返回的数据。
                //content是流式返回的每一个token字符串。
                String content = response.getMessage().getContent();
                //reasoningContent是思考模型返回的每一个token字符串。
                String reasoningContent = response.getMessage().getReasoningContent();
                /**
                 * 在调用思考模型的时候要注意，每个模型提供方返回的思考过程返回的标签不一样。
                 * 例如OpenAI通用协议的思考返回和Ollama的思考返回不一致。
                 * 项目已经对支持的模型提供方进行了处理，您需要在使用时根据实际情况选择将content还是reasoningContent返回给用户。
                 * 接下来就可以在这里根据您的项目具体需要，选择Flux或是Websocket方式返回给前端。
                 */

            }
        };
        sparkLlm.chatStream(textPrompt,listener,chatOptions);
    }
