{"repo": "agoncal/agoncal-fascicle-langchain4j", "files": {"ai-models-accessing-models/deepseek/src/main/java/org/agoncal/fascicle/langchain4j/accessing/deepseek/MusicianAssistant.java": {"e27aacb379f8e871418cde853f5f36c96abcbe55": {"t": 1785745659.772703, "n": 1105, "h": "34b48ac5eee6d5d1", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n // #############################\n // ### DEEPSEEK CHAT MODEL ###\n // #############################\n public String useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocUseOpenAIForDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .temperature(1.3)\n .timeout(Duration.ofSeconds(60))\n .topP(2d)\n .maxTokens(1000)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseOpenAIForDeepSeek[]\n return answer;\n }\n}\n"}, "7a4a41066220c371ef75599f435891e16b9d699f": {"t": 1785755497.406507, "n": 1105, "h": "34b48ac5eee6d5d1", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n // #############################\n // ### DEEPSEEK CHAT MODEL ###\n // #############################\n public String useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocUseOpenAIForDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .temperature(1.3)\n .timeout(Duration.ofSeconds(60))\n .topP(2d)\n .maxTokens(1000)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseOpenAIForDeepSeek[]\n return answer;\n }\n}\n"}, "d7841f529961cb7c3d0edf1a2055f67efd296e71": {"t": 1785755500.2663112, "n": 1167, "h": "7b3bbbe1be0fc498", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n public static void main(String[] args) {\n useOpenAIForDeepSeek();\n }\n\n // #############################\n // ### DEEPSEEK CHAT MODEL ###\n // #############################\n static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocUseOpenAIForDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .temperature(1.3)\n .timeout(Duration.ofSeconds(60))\n .topP(2d)\n .maxTokens(1000)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseOpenAIForDeepSeek[]\n }\n}\n"}, "571153c4ea7a16dc4c63252551d8ba73210f4c8d": {"t": 1785755501.5523074, "n": 1183, "h": "a51c13af29b833fa", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n public static void main(String[] args) {\n useOpenAIForDeepSeek();\n }\n\n // #############################\n // ### DEEPSEEK CHAT MODEL ###\n // #############################\n static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocUseOpenAIForDeepSeek[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .temperature(1.3)\n .timeout(Duration.ofSeconds(60))\n .topP(2d)\n .maxTokens(1000)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseOpenAIForDeepSeek[]\n }\n}\n"}, "69ab38dbb89b72f126b599ff8b6bcfcd1fbfaa0d": {"t": 1785755503.192267, "n": 1187, "h": "99cd04e658b63cca", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n public static void main(String[] args) {\n useOpenAIForDeepSeek();\n }\n\n // #############################\n // ### DEEPSEEK CHAT MODEL ###\n // #############################\n static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocUseOpenAIForDeepSeek[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .temperature(1.3)\n .timeout(Duration.ofSeconds(60))\n .topP(2d)\n .maxTokens(1000)\n .build();\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseOpenAIForDeepSeek[]\n }\n}\n"}, "947b6343c367f17488301c04f6900507214a9dbc": {"t": 1785755505.9539385, "n": 1265, "h": "e4f4b19588e6a491", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport java.time.Duration;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n public static void main(String[] args) {\n useOpenAIForDeepSeek();\n }\n\n // #############################\n // ### DEEPSEEK CHAT MODEL ###\n // #############################\n static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocUseOpenAIForDeepSeek[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .temperature(1.3)\n .timeout(Duration.ofSeconds(60))\n .topP(2d)\n .maxTokens(1000)\n .build();\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseOpenAIForDeepSeek[]\n }\n}\n"}}, "ai-models-accessing-models/open-ai/src/main/java/org/agoncal/fascicle/langchain4j/accessing/openai/MusicianAssistant.java": {"e27aacb379f8e871418cde853f5f36c96abcbe55": {"t": 1785745681.9790401, "n": 23680, "h": "774ed7bb7a6f7ac5", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_MINI;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.concurrent.CompletableFuture;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public String useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n return answer;\n }\n\n public Response useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What's jazz's history?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n return response;\n }\n\n public Response useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n return response;\n }\n\n public Response useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n return response;\n }\n\n public Response useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n return response;\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public ChatResponse useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n return response;\n }\n\n public String useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n return content;\n }\n\n public String useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n return content;\n }\n\n public String useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_1)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n return completion;\n }\n\n public ChatResponse useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n return chatResponse;\n }\n\n public ChatResponse useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n return chatResponse;\n }\n\n public String useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n return response;\n }\n\n public ChatResponse useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n return chatResponse;\n }\n\n public String useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n return completion;\n }\n\n public String useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n return completion;\n }\n\n public ChatResponse useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n return response;\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public ChatResponse useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreamingChatTypeOfModel[]\n return futureResponse.join();\n }\n\n public ChatResponse useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreaming[]\n return futureResponse.join();\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n\n futureResponse.join();\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n\n futureResponse.join();\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public Response useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n return response;\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public Response useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful jazz CD cover\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n return response;\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public String useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n return response;\n }\n\n public String useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n return chatModel.chat(\"Who is the author of 1984?\");\n }\n\n public ChatResponse useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are Moby Dick's main characters?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n return response;\n }\n\n public String useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are Moby Dick's main characters?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n return chatModel.chat(message).aiMessage().text();\n }\n\n public Response useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n return response;\n }\n\n public Response useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n return response;\n }\n\n public ChatResponse useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n return chatResponse;\n }\n\n public String useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album out?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n return answer;\n }\n\n public SystemMessage dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n return systemMsg;\n }\n}\n"}, "cede15ec015fd0569f2d8c505742d482b1722ec8": {"t": 1785755496.7975707, "n": 23680, "h": "774ed7bb7a6f7ac5", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_MINI;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.concurrent.CompletableFuture;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n private final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public String useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n return answer;\n }\n\n public Response useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What's jazz's history?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n return response;\n }\n\n public Response useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n return response;\n }\n\n public Response useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n return response;\n }\n\n public Response useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n return response;\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public ChatResponse useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n return response;\n }\n\n public String useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n return content;\n }\n\n public String useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n return content;\n }\n\n public String useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_1)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n return completion;\n }\n\n public ChatResponse useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n return chatResponse;\n }\n\n public ChatResponse useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n return chatResponse;\n }\n\n public String useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n return response;\n }\n\n public ChatResponse useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n return chatResponse;\n }\n\n public String useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n return completion;\n }\n\n public String useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n return completion;\n }\n\n public ChatResponse useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n return response;\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public ChatResponse useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreamingChatTypeOfModel[]\n return futureResponse.join();\n }\n\n public ChatResponse useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreaming[]\n return futureResponse.join();\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n\n futureResponse.join();\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n\n futureResponse.join();\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public Response useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n return response;\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public Response useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful jazz CD cover\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n return response;\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public String useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n return response;\n }\n\n public String useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n return chatModel.chat(\"Who is the author of 1984?\");\n }\n\n public ChatResponse useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are Moby Dick's main characters?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n return response;\n }\n\n public String useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are Moby Dick's main characters?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n return chatModel.chat(message).aiMessage().text();\n }\n\n public Response useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n return response;\n }\n\n public Response useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n return response;\n }\n\n public ChatResponse useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n return chatResponse;\n }\n\n public String useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album out?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n return answer;\n }\n\n public SystemMessage dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n return systemMsg;\n }\n}\n"}, "d72e4deab4ee68813e69797ea103bd0414d87b70": {"t": 1785755499.4209423, "n": 24109, "h": "ed7b9a57fcbb66ce", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_MINI;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.concurrent.CompletableFuture;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n// useOpenAIForDeepSeek();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What's jazz's history?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_1)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album out?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n\n futureResponse.join();\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n\n futureResponse.join();\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful jazz CD cover\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are Moby Dick's main characters?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are Moby Dick's main characters?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album out?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "cf6b8ebf38bf434dd7b9d58540ddac4278311678": {"t": 1785755502.050713, "n": 24197, "h": "a6216f9a9991b80c", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_MINI;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.concurrent.CompletableFuture;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n// useOpenAIForDeepSeek();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_1)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_1.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n\n futureResponse.join();\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n\n futureResponse.join();\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "dad14c3c0349a4f97d42fd8564e94718f410d535": {"t": 1785755504.4648216, "n": 24281, "h": "e0707e0d9a9d7b3c", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_MINI;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.concurrent.CompletableFuture;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n// useOpenAIForDeepSeek();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n\n futureResponse.join();\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n\n futureResponse.join();\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "4ccbefff818f63c427a51a633b1ba337da6d2830": {"t": 1785755505.9445088, "n": 24281, "h": "cdf67a9040bdd22d", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.concurrent.CompletableFuture;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n// useOpenAIForDeepSeek();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n futureResponse.complete(completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n futureResponse.completeExceptionally(error);\n }\n });\n\n futureResponse.join();\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n\n futureResponse.join();\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n CompletableFuture futureResponse = new CompletableFuture<>();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n\n futureResponse.join();\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "30ed3eee6dc4d9501624b183865b3bf883611896": {"t": 1785755509.2738433, "n": 23817, "h": "28b0315eb391bf4f", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n useOpenAIForDeepSeek();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String partialResponse) {\n System.out.println(\"onPartialResponse: \" + partialResponse);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n System.out.println(\"onCompleteResponse: \" + completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseStringOneLine() {\n System.out.println(\"### useTypedUntypedResponseStringOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseStringOneLine[]\n System.out.println(chatModel.chat(\"Who is the author of 1984?\"));\n // end::adocTypedUntypedResponseStringOneLine[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseUserMessageOneLine() {\n System.out.println(\"### useTypedUntypedResponseUserMessageOneLine\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessageOneLine[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n System.out.println(chatModel.chat(message).aiMessage().text());\n // end::adocTypedUntypedResponseUserMessageOneLine[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "2fbf29de342d472c81d06eb1c054c5e2246ebecf": {"t": 1785755510.6846454, "n": 22904, "h": "068bfcf827d2c902", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.List;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n useOpenAIForDeepSeek();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String partialResponse) {\n System.out.println(\"onPartialResponse: \" + partialResponse);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n System.out.println(\"onCompleteResponse: \" + completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "df3a10825d7313eb350d014a36ab9b5307f45b8d": {"t": 1785755512.3367217, "n": 22335, "h": "de887e18e2184632", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.List;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n useOpenAiLambdaStreaming();\n useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n// useJSONResponseFormat();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String partialResponse) {\n System.out.println(\"onPartialResponse: \" + partialResponse);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse completeResponse) {\n System.out.println(\"onCompleteResponse: \" + completeResponse);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "df43bcaeabee5573c4e285355e5d4104d6ae87ab": {"t": 1785755514.49529, "n": 22209, "h": "e460cf8c14ca0ed9", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.List;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n useJSONResponseFormat();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputToken=17, outputToken=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.0598405, 0.057074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON)\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output);\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "69f1bf6225fb0497a02993eeb8945ab74d47ca6d": {"t": 1785755516.7358036, "n": 22326, "h": "60a9c47f205f85d4", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.request.ResponseFormat;\nimport dev.langchain4j.model.chat.request.ResponseFormatType;\nimport dev.langchain4j.model.chat.request.json.JsonObjectSchema;\nimport dev.langchain4j.model.chat.request.json.JsonSchema;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\nimport java.util.List;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n// useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n useJSONResponseFormat();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n\n System.out.println(response.aiMessage().text()); // Captain Ahab, Captain Peleg, Flask\n System.out.println(response.tokenUsage()); // inputTokenCount=17, outputTokenCount=34\n System.out.println(response.finishReason()); // STOP\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension()); // 1536\n System.out.println(response.content().vectorAsList()); // [0.059837405, 0.05773074,...]\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void useJSONResponseFormat() throws JsonProcessingException {\n\n // tag::adocJSONResponseFormat[]\n ResponseFormat responseFormat = ResponseFormat.builder()\n .type(ResponseFormatType.JSON) // type can be either TEXT (default) or JSON\n .jsonSchema(JsonSchema.builder()\n .name(\"Musician\")\n .rootElement(JsonObjectSchema.builder()\n .addStringProperty(\"name\")\n .addIntegerProperty(\"age\")\n .addStringProperty(\"instrument\")\n .required(\"name\", \"age\")\n .build())\n .build())\n .build();\n\n UserMessage userMessage = UserMessage.from(\"Return the top 10 Jazz musicians\");\n\n ChatRequest chatRequest = ChatRequest.builder()\n .responseFormat(responseFormat)\n .messages(userMessage)\n .build();\n\n ChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .modelName(\"gpt-4o-mini\")\n .build();\n\n ChatResponse chatResponse = chatModel.chat(chatRequest);\n // end::adocJSONResponseFormat[]\n\n String output = chatResponse.aiMessage().text();\n System.out.println(output); // {\"name\":\"John\",\"age\":42,\"height\":1.75,\"married\":false}\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "cb7610e12dbbcf1b0dc46c1d2774ed18ef609853": {"t": 1785755520.640531, "n": 20545, "h": "545e3f9fb48fdc04", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n// useOpenAiChatRequestDefault();\n// useOpenAiResponseString();\n useOpenAiChatResponse();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiResponseString() {\n System.out.println(\"### useOpenAiResponseString\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocResponseString[]\n String response = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(response);\n // end::adocResponseString[]\n }\n\n private static void useOpenAiChatResponse() {\n System.out.println(\"### useOpenAiChatResponse\");\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n // tag::adocChatResponse[]\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n\n System.out.println(chatResponse.aiMessage().text());\n System.out.println(chatResponse.id());\n System.out.println(chatResponse.finishReason());\n System.out.println(chatResponse.modelName());\n // end::adocChatResponse[]\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "6290354ac0b95e7159824fe2a3226330ab7a612a": {"t": 1785755523.4543364, "n": 18812, "h": "7137ba81e9eca766", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n useOpenAiChatRequestDefault();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "9fab6a313e70e13b607a79f6f8da4d423542ad78": {"t": 1785755527.0685477, "n": 18812, "h": "370e5f1968a4b5fa", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\n\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\n\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.request.ChatRequest;\nimport dev.langchain4j.model.chat.request.ChatRequestParameters;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\n\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\n\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\n\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\n\nimport dev.langchain4j.model.openai.OpenAiImageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\n\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\n\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\n\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\n\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\n\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiRichConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatRequest();\n useOpenAiChatRequestDefault();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiRichConf() {\n System.out.println(\"### useOpenAiRichConf\");\n\n // tag::adocRichConf[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatRequest() {\n System.out.println(\"### useOpenAiChatRequest\");\n\n // tag::adocChatRequest[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .build();\n\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .parameters(parameters)\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // end::adocChatRequest[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatRequestDefault() {\n System.out.println(\"### useOpenAiChatRequestDefault\");\n\n // tag::adocChatRequestDefault[]\n ChatRequestParameters parameters = ChatRequestParameters.builder()\n .modelName(GPT_4_O.toString())\n .temperature(0.7)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxOutputTokens(150)\n .build();\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(System.getenv(\"OPENAI_API_KEY\"))\n .defaultRequestParameters(parameters)\n .build();\n\n ChatRequest chatRequest = ChatRequest.builder()\n .messages(UserMessage.from(\"When was the first Rolling Stones album released?\"))\n .build();\n\n ChatResponse chatResponse = model.chat(chatRequest);\n // tag::adocChatRequestDefault[]\n\n System.out.println(chatResponse.aiMessage().text());\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "c27c3fe6ba8f6e4187522a58b486237bd5cbbc07": {"t": 1785755529.5025263, "n": 16981, "h": "7258b5c1339fd89d", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_1_NANO;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatModelBuilder();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n// useTypedUntypedResponseUserMessage();\n// useTypedUntypedResponseImage();\n// useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_1_NANO)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "d7841f529961cb7c3d0edf1a2055f67efd296e71": {"t": 1785755530.9270248, "n": 16898, "h": "0f7faec159035e03", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.chat.StreamingChatModel;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatModelBuilder();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n useTypedUntypedResponseUserMessage();\n useTypedUntypedResponseImage();\n useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "3c095c259585d2c85b00f4abf5f9928085f6cede": {"t": 1785755532.5002909, "n": 16962, "h": "76280f4750875dff", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponse;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onPartialResponseAndError;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.chat.response.StreamingChatResponseHandler;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatModelBuilder();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n useTypedUntypedResponseUserMessage();\n useTypedUntypedResponseImage();\n useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"What are some common formats and sizes of video tapes?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.chat(\"Who are some influential female musicians?\",\n new StreamingChatResponseHandler() {\n\n @Override\n public void onPartialResponse(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onCompleteResponse(ChatResponse response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponse(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.chat(\"Who are some influential female musicians?\",\n onPartialResponseAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "e818ed6fcc005b526f34f75a563fedb19573c782": {"t": 1785755533.8485851, "n": 16935, "h": "80883e1aa6697bdc", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n// useLangChain4jInsteadSDK();\n// useOpenAiLanguageTypeOfModel();\n// useOpenAiLanguageModel();\n// useOpenAiLanguageModelPrompt();\n// useOpenAiLanguageModelBuilder();\n\n// useOpenAiChatTypeOfModel();\n// useOpenAiSimpleConf();\n// useOpenAiSimpleConf2();\n// useOpenAiChatModelBuilder();\n// useOpenAiChatModelTemperatureOne();\n// useOpenAiChatModelTemperatureZero();\n// useOpenAiChatModelAiMessage();\n\n// useOpenAiStreamingChatTypeOfModel();\n// useOpenAiStreaming();\n// useOpenAiLambdaStreaming();\n// useOpenAiLambdaStreamingError();\n\n// useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n\n// useTypedUntypedResponseString();\n useTypedUntypedResponseUserMessage();\n useTypedUntypedResponseImage();\n useTypedUntypedResponseEmbedding();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n private static void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n private static void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n private static void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n private static void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n ChatResponse response = model.chat(userMessage);\n\n System.out.println(response.aiMessage().text());\n // end::adocChatTypeOfModel[]\n }\n\n private static void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n private static void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n private static void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n ChatResponse response = model.chat(sysMsg, userMsg);\n\n System.out.println(response.aiMessage().text());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n private static void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n private static void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n private static void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.generate(\"Who are some influential female musicians?\",\n onNext(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n private static void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.generate(\"Who are some influential female musicians?\",\n onNextAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n private static void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n private static void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n private static void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n ChatResponse response = chatModel.chat(message);\n System.out.println(response.aiMessage().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n private static void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n private static void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n private static void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "571153c4ea7a16dc4c63252551d8ba73210f4c8d": {"t": 1785755535.5601807, "n": 16925, "h": "be65d5cdb29b72f0", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n\n useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiLambdaStreaming();\n// musicianAssistant.useOpenAiLambdaStreamingError();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n private static void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.chat(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.chat(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.generate(\"Who are some influential female musicians?\",\n onNext(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.generate(\"Who are some influential female musicians?\",\n onNextAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n private static void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.chat(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "69ab38dbb89b72f126b599ff8b6bcfcd1fbfaa0d": {"t": 1785755537.0814052, "n": 17040, "h": "5139bef07427b1e5", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiLambdaStreaming();\n// musicianAssistant.useOpenAiLambdaStreamingError();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.generate(\"Who are some influential female musicians?\",\n onNext(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.generate(\"Who are some influential female musicians?\",\n onNextAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "b4f8fd8c5547a938ab73889bdec36f7a01659d61": {"t": 1785755538.4459696, "n": 17041, "h": "b6443a5e96eb0d82", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport static dev.langchain4j.model.openai.OpenAiEmbeddingModelName.TEXT_EMBEDDING_3_SMALL;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport static dev.langchain4j.model.openai.OpenAiImageModelName.DALL_E_3;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport static dev.langchain4j.model.openai.OpenAiLanguageModelName.GPT_3_5_TURBO_INSTRUCT;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport static dev.langchain4j.model.openai.OpenAiModerationModelName.TEXT_MODERATION_STABLE;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiLambdaStreaming();\n// musicianAssistant.useOpenAiLambdaStreamingError();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();;\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_3_5_TURBO_INSTRUCT)\n .build();\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.generate(\"Who are some influential female musicians?\",\n onNext(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.generate(\"Who are some influential female musicians?\",\n onNextAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_MODERATION_STABLE)\n .build();\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(DALL_E_3)\n .build();\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(TEXT_EMBEDDING_3_SMALL)\n .build();\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "b2a245cc91934e08cd7b56df67e687b69ebc911a": {"t": 1785755540.1334753, "n": 15881, "h": "e69adc63c0e0e64e", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiLambdaStreaming();\n// musicianAssistant.useOpenAiLambdaStreamingError();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.generate(\"Who are some influential female musicians?\",\n onNext(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.generate(\"Who are some influential female musicians?\",\n onNextAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Colourful CD album cover showing all main Jazz artists\");\n\n Image image = response.content();\n\n System.out.println(image.url());\n System.out.println(image.mimeType());\n // end::adocImageTypeOfModel[]\n\n response = model.edit(image, \"Make it more blue\");\n\n System.out.println(response.content().url());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "fc1cc10e0ba063591eed2905f5918cd92142d88f": {"t": 1785755541.8725321, "n": 15793, "h": "3be0cd4b2dc4cafa", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;\nimport static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiLambdaStreaming();\n musicianAssistant.useOpenAiLambdaStreamingError();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n public void useOpenAiLambdaStreaming() {\n System.out.println(\"### useOpenAiLambdaStreaming\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreaming[]\n model.generate(\"Who are some influential female musicians?\",\n onNext(System.out::print));\n // end::adocLambdaStreaming[]\n }\n\n public void useOpenAiLambdaStreamingError() {\n System.out.println(\"### useOpenAiLambdaStreamingError\");\n\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n // tag::adocLambdaStreamingError[]\n model.generate(\"Who are some influential female musicians?\",\n onNextAndError(System.out::print, Throwable::printStackTrace));\n // end::adocLambdaStreamingError[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artists, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "fa397968a2c52849554618248fd6bc40b4518bc1": {"t": 1785755543.3578563, "n": 14620, "h": "3cbf9f20c95ffa84", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artists, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' requests on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "ae4ebc3a50f491ef4f0cac1688e6a399f6551c48": {"t": 1785755545.0758755, "n": 14619, "h": "b6f6c4f22e073abf", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artists, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' request on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "938d50ac9b98ee851271ac1e499854ed976a96ce": {"t": 1785755546.7370098, "n": 15636, "h": "5c58926448d50fcc", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.language.StreamingLanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingLanguageModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n// musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n musicianAssistant.useOpenAiStreamingLanguageTypeOfModel();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #######################################\n // ### OPENAI STREAMING LANGUAGE MODEL ###\n // #######################################\n public void useOpenAiStreamingLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingLanguageTypeOfModel\");\n\n // tag::adocStreamingLanguageTypeOfModel[]\n StreamingLanguageModel model = OpenAiStreamingLanguageModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential Jazz musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingLanguageTypeOfModel[]\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artists, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' request on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "18c0555760fa64fab85e99a49c2bce98f6e66fec": {"t": 1785755548.308599, "n": 15636, "h": "57c82485325f4569", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.language.StreamingLanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingLanguageModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n// musicianAssistant.useOpenAiStreamingLanguageTypeOfModel();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #######################################\n // ### OPENAI STREAMING LANGUAGE MODEL ###\n // #######################################\n public void useOpenAiStreamingLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingLanguageTypeOfModel\");\n\n // tag::adocStreamingLanguageTypeOfModel[]\n StreamingLanguageModel model = OpenAiStreamingLanguageModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential Jazz musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingLanguageTypeOfModel[]\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .temperature(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artists, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' request on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "9bbc3f5455fc07d61f3118e2f8a8f41ec3e3f3cf": {"t": 1785755550.0590186, "n": 15646, "h": "913ce78e2a3df21f", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.language.StreamingLanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingLanguageModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n// musicianAssistant.useOpenAiStreamingLanguageTypeOfModel();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #######################################\n // ### OPENAI STREAMING LANGUAGE MODEL ###\n // #######################################\n public void useOpenAiStreamingLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingLanguageTypeOfModel\");\n\n // tag::adocStreamingLanguageTypeOfModel[]\n StreamingLanguageModel model = OpenAiStreamingLanguageModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential Jazz musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingLanguageTypeOfModel[]\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .frequencyPenalty(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artists, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' request on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "3c768ef78ccb3f7deeeb49d105bf6b5e48e3b446": {"t": 1785755551.7024336, "n": 15645, "h": "4ae15fe90b7285e0", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.language.StreamingLanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingLanguageModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n// musicianAssistant.useOpenAiStreamingLanguageTypeOfModel();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #######################################\n // ### OPENAI STREAMING LANGUAGE MODEL ###\n // #######################################\n public void useOpenAiStreamingLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingLanguageTypeOfModel\");\n\n // tag::adocStreamingLanguageTypeOfModel[]\n StreamingLanguageModel model = OpenAiStreamingLanguageModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential Jazz musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingLanguageTypeOfModel[]\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiSimpleConf2() {\n System.out.println(\"### useOpenAiSimpleConf2\");\n\n // tag::adocSimpleConf2[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O_MINI)\n .build();\n // end::adocSimpleConf2[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .frequencyPenalty(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artist, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' request on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}, "f03ed42bae8a136bcb381456f69064e58e846a5a": {"t": 1785755553.2324202, "n": 15162, "h": "0b51b9979b906341", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.AiMessage;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.StreamingResponseHandler;\nimport dev.langchain4j.model.chat.ChatLanguageModel;\nimport dev.langchain4j.model.chat.StreamingChatLanguageModel;\nimport dev.langchain4j.model.image.ImageModel;\nimport dev.langchain4j.model.input.Prompt;\nimport dev.langchain4j.model.language.LanguageModel;\nimport dev.langchain4j.model.language.StreamingLanguageModel;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.moderation.ModerationModel;\nimport dev.langchain4j.model.openai.OpenAiChatModel;\nimport static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O;\nimport dev.langchain4j.model.openai.OpenAiEmbeddingModel;\nimport dev.langchain4j.model.openai.OpenAiImageModel;\nimport dev.langchain4j.model.openai.OpenAiLanguageModel;\nimport dev.langchain4j.model.openai.OpenAiModerationModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel;\nimport dev.langchain4j.model.openai.OpenAiStreamingLanguageModel;\nimport dev.langchain4j.model.output.FinishReason;\nimport dev.langchain4j.model.output.Response;\nimport dev.langchain4j.model.output.TokenUsage;\n\nimport java.time.Duration;\n\n// tag::adocSkip[]\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\n// end::adocSkip[]\npublic class MusicianAssistant {\n\n public static void main(String[] args) {\n MusicianAssistant musicianAssistant = new MusicianAssistant();\n\n musicianAssistant.useLangChain4jInsteadSDK();\n// musicianAssistant.useOpenAiLanguageTypeOfModel();\n// musicianAssistant.useOpenAiLanguageModel();\n// musicianAssistant.useOpenAiLanguageModelPrompt();\n// musicianAssistant.useOpenAiLanguageModelBuilder();\n// musicianAssistant.useOpenAiStreamingLanguageTypeOfModel();\n\n// musicianAssistant.useOpenAiChatTypeOfModel();\n// musicianAssistant.useOpenAiChatModelTemperatureOne();\n// musicianAssistant.useOpenAiChatModelTemperatureZero();\n// musicianAssistant.useTypedUntypedResponseString();\n// musicianAssistant.useTypedUntypedResponseUserMessage();\n// musicianAssistant.useTypedUntypedResponseImage();\n// musicianAssistant.useTypedUntypedResponseEmbedding();\n// musicianAssistant.useOpenAiStreaming();\n// musicianAssistant.useOpenAiChatModelBuilder();\n// musicianAssistant.useOpenAiStreamingChatTypeOfModel();\n\n// musicianAssistant.useOpenAiModerationTypeOfModel();\n// musicianAssistant.useOpenAiImageTypeOfModel();\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String OPENAI_ORGANIZATION = System.getenv(\"OPENAI_ORGANIZATION\");\n private static final String PROMPT = \"When was the first Beatles album released?\";\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n public void useLangChain4jInsteadSDK() {\n System.out.println(\"### useLangChain4jInsteadSDK\");\n\n // tag::adocUseLangChain4jInsteadSDK[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n String answer = model.generate(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocUseLangChain4jInsteadSDK[]\n }\n\n public void useOpenAiLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiLanguageTypeOfModel\");\n\n // tag::adocLanguageTypeOfModel[]\n LanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"What is the history of jazz music?\");\n\n System.out.println(response.content());\n // end::adocLanguageTypeOfModel[]\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n public void useOpenAiLanguageModel() {\n System.out.println(\"### useOpenAiLanguageModel\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"When was the first Beatles album released?\");\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelPrompt() {\n System.out.println(\"### useOpenAiLanguageModelPrompt\");\n\n OpenAiLanguageModel model = OpenAiLanguageModel.withApiKey(OPENAI_API_KEY);\n\n Prompt prompt = new Prompt(\"When was the first Beatles album released?\");\n Response response = model.generate(prompt);\n\n String content = response.content();\n FinishReason finishReason = response.finishReason();\n TokenUsage tokenUsage = response.tokenUsage();\n\n System.out.println(content);\n System.out.println(finishReason.name());\n System.out.println(tokenUsage.inputTokenCount());\n System.out.println(tokenUsage.outputTokenCount());\n System.out.println(tokenUsage.totalTokenCount());\n }\n\n public void useOpenAiLanguageModelBuilder() {\n System.out.println(\"### useOpenAiLanguageModelBuilder\");\n\n // tag::adocSnippet[]\n OpenAiLanguageModel model = OpenAiLanguageModel.builder()\n .apiKey(OPENAI_API_KEY)\n .temperature(0.3)\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocSnippet[]\n\n Response response = model.generate(PROMPT);\n\n System.out.println(response.content());\n System.out.println(response.finishReason());\n System.out.println(response.tokenUsage());\n }\n\n // #######################################\n // ### OPENAI STREAMING LANGUAGE MODEL ###\n // #######################################\n public void useOpenAiStreamingLanguageTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingLanguageTypeOfModel\");\n\n // tag::adocStreamingLanguageTypeOfModel[]\n StreamingLanguageModel model = OpenAiStreamingLanguageModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential Jazz musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingLanguageTypeOfModel[]\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n public void useOpenAiChatTypeOfModel() {\n System.out.println(\"### useOpenAiChatTypeOfModel\");\n\n // tag::adocChatTypeOfModel[]\n ChatLanguageModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n UserMessage userMessage = new UserMessage(\"Who composed the Moonlight Sonata?\");\n Response response = model.generate(userMessage);\n\n System.out.println(response.content());\n // end::adocChatTypeOfModel[]\n }\n\n public void useOpenAiSimpleConf() {\n System.out.println(\"### useOpenAiSimpleConf\");\n\n // tag::adocSimpleConf[]\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n // end::adocSimpleConf[]\n\n String content = model.generate(\"What inspired the author to start writing?\");\n\n System.out.println(content);\n }\n\n public void useOpenAiChatModelBuilder() {\n System.out.println(\"### useOpenAiChatModelBuilder\");\n\n // tag::adocRichConf[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .organizationId(OPENAI_ORGANIZATION)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.5)\n .temperature(0.9)\n .maxRetries(3)\n .maxTokens(150)\n .topP(1.0)\n .seed(42)\n .timeout(Duration.ofSeconds(30))\n .logRequests(true)\n .logResponses(true)\n .build();\n // end::adocRichConf[]\n\n String completion = model.generate(\"When was the first Rolling Stones album released?\");\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureOne() {\n System.out.println(\"### useOpenAiChatModelTemperatureOne\");\n\n // tag::adocOpenAiChatModelTemperatureOne[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .frequencyPenalty(1.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureOne[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelTemperatureZero() {\n System.out.println(\"### useOpenAiChatModelTemperatureZero\");\n\n // tag::adocOpenAiChatModelTemperatureZero[]\n OpenAiChatModel model = OpenAiChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(GPT_4_O)\n .frequencyPenalty(0.0)\n .build();\n\n String completion = model.generate(\"In one single sentence, tell me what is the significance of the Beatles in music history?\");\n // end::adocOpenAiChatModelTemperatureZero[]\n\n System.out.println(completion);\n }\n\n public void useOpenAiChatModelAiMessage() {\n System.out.println(\"### useOpenAiChatModelAiMessage\");\n\n OpenAiChatModel model = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n SystemMessage sysMsg = new SystemMessage(\"You are a music expert.\");\n UserMessage userMsg = new UserMessage(\"When was the first Rolling Stones album released?\");\n Response response = model.generate(sysMsg, userMsg);\n\n System.out.println(response);\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n public void useOpenAiStreamingChatTypeOfModel() {\n System.out.println(\"### useOpenAiStreamingChatTypeOfModel\");\n\n // tag::adocStreamingChatTypeOfModel[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"What are some common formats and sizes of video tapes?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreamingChatTypeOfModel[]\n }\n\n public void useOpenAiStreaming() {\n System.out.println(\"### useOpenAiStreaming\");\n\n // tag::adocStreaming[]\n StreamingChatLanguageModel model = OpenAiStreamingChatModel.withApiKey(OPENAI_API_KEY);\n\n model.generate(\"Who are some influential female musicians?\",\n new StreamingResponseHandler<>() {\n\n @Override\n public void onNext(String token) {\n System.out.print(token);\n }\n\n @Override\n public void onComplete(Response response) {\n System.out.println(\"Streaming completed: \" + response);\n }\n\n @Override\n public void onError(Throwable error) {\n error.printStackTrace();\n }\n });\n // end::adocStreaming[]\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n public void useOpenAiModerationTypeOfModel() {\n System.out.println(\"### useOpenAiModerationTypeOfModel\");\n\n // tag::adocModerationTypeOfModel[]\n ModerationModel model = OpenAiModerationModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.moderate(\"I want to kill all bass players.\");\n\n System.out.println(response.content());\n // end::adocModerationTypeOfModel[]\n }\n\n // ##########################\n // ### OPENAI IMAGE MODEL ###\n // ##########################\n public void useOpenAiImageTypeOfModel() {\n System.out.println(\"### useOpenAiImageTypeOfModel\");\n\n // tag::adocImageTypeOfModel[]\n ImageModel model = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n Response response = model.generate(\"Jazz album cover showing all main Jazz artist, à la Sergent Pepper\");\n\n Image content = response.content();\n\n System.out.println(content.url());\n System.out.println(content.mimeType());\n // end::adocImageTypeOfModel[]\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n public void useTypedUntypedResponseString() {\n System.out.println(\"### useTypedUntypedResponseString\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseString[]\n String response = chatModel.generate(\"Who is the author of 1984?\");\n System.out.println(response);\n // end::adocTypedUntypedResponseString[]\n }\n\n public void useTypedUntypedResponseUserMessage() {\n System.out.println(\"### useTypedUntypedResponseUserMessage\");\n\n OpenAiChatModel chatModel = OpenAiChatModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseUserMessage[]\n UserMessage message = new UserMessage(\"Who are the main characters in Moby Dick?\");\n Response response = chatModel.generate(message);\n System.out.println(response.content().text());\n System.out.println(response.tokenUsage());\n System.out.println(response.finishReason());\n // end::adocTypedUntypedResponseUserMessage[]\n }\n\n public void useTypedUntypedResponseImage() {\n System.out.println(\"### useTypedUntypedResponseImage\");\n\n OpenAiImageModel imageModel = OpenAiImageModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseImage[]\n Response response = imageModel.generate(\"Draw Moby Dick\");\n System.out.println(response.content().url());\n System.out.println(response.content().base64Data());\n // end::adocTypedUntypedResponseImage[]\n }\n\n public void useTypedUntypedResponseEmbedding() {\n System.out.println(\"### useTypedUntypedResponseEmbedding\");\n\n OpenAiEmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(OPENAI_API_KEY);\n\n // tag::adocTypedUntypedResponseEmbedding[]\n Response response = embeddingModel.embed(\"Moby Dick is a novel by Herman Melville about Captain Ahab's quest to hunt a giant white whale\");\n System.out.println(response.content().dimension());\n System.out.println(response.content().vectorAsList());\n // end::adocTypedUntypedResponseEmbedding[]\n }\n\n public void dontKnow() {\n // tag::adocDontKnow[]\n SystemMessage systemMsg = new SystemMessage(\"\"\"\n You are a Vintage Store assistant.\n You can answer customers' request on any of these vintage items.\n If you don't know the answer, say 'I don't know'.\n \"\"\");\n // end::adocDontKnow[]\n }\n}\n"}}, "ai-models-accessing-models/open-ai-official/src/test/java/org/agoncal/fascicle/langchain4j/accessing/openaiofficial/MusicianAssistantTest.java": {"e27aacb379f8e871418cde853f5f36c96abcbe55": {"t": 1785745683.05802, "n": 1475, "h": "891150a75a53894b", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.model.output.Response;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\n\n@EnabledIfEnvironmentVariable(named = \"OPENAI_API_KEY\", matches = \".+\")\nclass MusicianAssistantTest {\n\n private MusicianAssistant assistant;\n\n @BeforeEach\n void setUp() {\n assistant = new MusicianAssistant();\n }\n\n @Test\n void shouldUseOpenAIOfficial() {\n String answer = assistant.useOpenAIOfficial();\n assertNotNull(answer);\n }\n\n @Test\n @EnabledIfEnvironmentVariable(named = \"DEEPSEEK_API_KEY\", matches = \".+\")\n void shouldUseOpenAIForDeepSeek() {\n String answer = assistant.useOpenAIForDeepSeek();\n assertNotNull(answer);\n }\n\n @Test\n @EnabledIfEnvironmentVariable(named = \"AZURE_OPENAI_KEY\", matches = \".+\")\n void shouldUseOpenAIForFoundryChat() {\n String answer = assistant.useOpenAIForFoundryChat();\n assertNotNull(answer);\n }\n\n // Image generation test disabled by default (expensive)\n // @Test\n // @EnabledIfEnvironmentVariable(named = \"AZURE_OPENAI_KEY\", matches = \".+\")\n // void shouldUseOpenAIForFoundryImage() {\n // Response answer = assistant.useOpenAIForFoundryImage();\n // assertNotNull(answer);\n // assertNotNull(answer.content());\n // }\n}\n"}, "7a4a41066220c371ef75599f435891e16b9d699f": {"t": 1785755493.4415922, "n": 1475, "h": "891150a75a53894b", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.model.output.Response;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\n\n@EnabledIfEnvironmentVariable(named = \"OPENAI_API_KEY\", matches = \".+\")\nclass MusicianAssistantTest {\n\n private MusicianAssistant assistant;\n\n @BeforeEach\n void setUp() {\n assistant = new MusicianAssistant();\n }\n\n @Test\n void shouldUseOpenAIOfficial() {\n String answer = assistant.useOpenAIOfficial();\n assertNotNull(answer);\n }\n\n @Test\n @EnabledIfEnvironmentVariable(named = \"DEEPSEEK_API_KEY\", matches = \".+\")\n void shouldUseOpenAIForDeepSeek() {\n String answer = assistant.useOpenAIForDeepSeek();\n assertNotNull(answer);\n }\n\n @Test\n @EnabledIfEnvironmentVariable(named = \"AZURE_OPENAI_KEY\", matches = \".+\")\n void shouldUseOpenAIForFoundryChat() {\n String answer = assistant.useOpenAIForFoundryChat();\n assertNotNull(answer);\n }\n\n // Image generation test disabled by default (expensive)\n // @Test\n // @EnabledIfEnvironmentVariable(named = \"AZURE_OPENAI_KEY\", matches = \".+\")\n // void shouldUseOpenAIForFoundryImage() {\n // Response answer = assistant.useOpenAIForFoundryImage();\n // assertNotNull(answer);\n // assertNotNull(answer.content());\n // }\n}\n"}}, "ai-models-accessing-models/open-ai-official/src/main/java/org/agoncal/fascicle/langchain4j/accessing/openaiofficial/MusicianAssistant.java": {"e27aacb379f8e871418cde853f5f36c96abcbe55": {"t": 1785745690.504408, "n": 3422, "h": "6407b58ed105705a", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport static com.openai.azure.AzureOpenAIServiceVersion.getV2025_01_01_PREVIEW;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialImageModel;\nimport dev.langchain4j.model.output.Response;\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\npublic class MusicianAssistant {\n\n private final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private final String AZURE_FOUNDRY_KEY = System.getenv(\"AZURE_OPENAI_KEY\");\n private final String AZURE_FOUNDRY_ENDPOINT = System.getenv(\"AZURE_OPENAI_ENDPOINT\");\n\n public String useOpenAIOfficial() {\n System.out.println(\"### useOpenAIOfficial\");\n\n // tag::adocSnippet[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(com.openai.models.ChatModel.GPT_4_1)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocSnippet[]\n return answer;\n }\n\n public String useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album out?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n return answer;\n }\n\n // ################################\n // ### AZURE FOUNDRY CHAT MODEL ###\n // ################################\n public String useOpenAIForFoundryChat() {\n System.out.println(\"### useOpenAIForFoundryChat\");\n\n // tag::adocUseOpenAIForFoundryChat[]\n OpenAiOfficialChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"Llama-4-Scout-17B-16E-Instruct\")\n .azureDeploymentName(\"Llama-4-Scout-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryChat[]\n\n String answer = model.chat(\"In one sentence, what is the best Pink Floyd album?\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n return answer;\n }\n\n // #################################\n // ### AZURE FOUNDRY IMAGE MODEL ###\n // #################################\n public Response useOpenAIForFoundryImage() {\n System.out.println(\"### useOpenAIForFoundryImage\");\n\n // tag::adocUseOpenAIForFoundryImage[]\n OpenAiOfficialImageModel model = OpenAiOfficialImageModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"dall-e-3\")\n .azureDeploymentName(\"Dalle-3-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryImage[]\n\n Response answer = model.generate(\"Draw a CD album with a Pink Flamingo\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n return answer;\n }\n}\n"}, "7a4a41066220c371ef75599f435891e16b9d699f": {"t": 1785755500.1429574, "n": 3422, "h": "6407b58ed105705a", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport static com.openai.azure.AzureOpenAIServiceVersion.getV2025_01_01_PREVIEW;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialImageModel;\nimport dev.langchain4j.model.output.Response;\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\npublic class MusicianAssistant {\n\n private final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private final String AZURE_FOUNDRY_KEY = System.getenv(\"AZURE_OPENAI_KEY\");\n private final String AZURE_FOUNDRY_ENDPOINT = System.getenv(\"AZURE_OPENAI_ENDPOINT\");\n\n public String useOpenAIOfficial() {\n System.out.println(\"### useOpenAIOfficial\");\n\n // tag::adocSnippet[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(com.openai.models.ChatModel.GPT_4_1)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocSnippet[]\n return answer;\n }\n\n public String useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album out?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n return answer;\n }\n\n // ################################\n // ### AZURE FOUNDRY CHAT MODEL ###\n // ################################\n public String useOpenAIForFoundryChat() {\n System.out.println(\"### useOpenAIForFoundryChat\");\n\n // tag::adocUseOpenAIForFoundryChat[]\n OpenAiOfficialChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"Llama-4-Scout-17B-16E-Instruct\")\n .azureDeploymentName(\"Llama-4-Scout-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryChat[]\n\n String answer = model.chat(\"In one sentence, what is the best Pink Floyd album?\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n return answer;\n }\n\n // #################################\n // ### AZURE FOUNDRY IMAGE MODEL ###\n // #################################\n public Response useOpenAIForFoundryImage() {\n System.out.println(\"### useOpenAIForFoundryImage\");\n\n // tag::adocUseOpenAIForFoundryImage[]\n OpenAiOfficialImageModel model = OpenAiOfficialImageModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"dall-e-3\")\n .azureDeploymentName(\"Dalle-3-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryImage[]\n\n Response answer = model.generate(\"Draw a CD album with a Pink Flamingo\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n return answer;\n }\n}\n"}, "d72e4deab4ee68813e69797ea103bd0414d87b70": {"t": 1785755501.4758716, "n": 3576, "h": "29fb2ae78938cca2", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport static com.openai.azure.AzureOpenAIServiceVersion.getV2025_01_01_PREVIEW;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialImageModel;\nimport dev.langchain4j.model.output.Response;\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useOpenAIOfficial();\n// useOpenAIForDeepSeek();\n// useOpenAIForFoundryChat();\n useOpenAIForFoundryImage();\n\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String AZURE_FOUNDRY_KEY = System.getenv(\"AZURE_OPENAI_KEY\");\n private static final String AZURE_FOUNDRY_ENDPOINT = System.getenv(\"AZURE_OPENAI_ENDPOINT\");\n\n private static void useOpenAIOfficial() {\n System.out.println(\"### useOpenAIOfficial\");\n\n // tag::adocSnippet[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(com.openai.models.ChatModel.GPT_4_1)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocSnippet[]\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album out?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n // ################################\n // ### AZURE FOUNDRY CHAT MODEL ###\n // ################################\n static void useOpenAIForFoundryChat() {\n System.out.println(\"### useOpenAIForFoundryChat\");\n\n // tag::adocUseOpenAIForFoundryChat[]\n OpenAiOfficialChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"Llama-4-Scout-17B-16E-Instruct\")\n .azureDeploymentName(\"Llama-4-Scout-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryChat[]\n\n String answer = model.chat(\"In one sentence, what is the best Pink Floyd album?\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n }\n\n // #################################\n // ### AZURE FOUNDRY IMAGE MODEL ###\n // #################################\n static void useOpenAIForFoundryImage() {\n System.out.println(\"### useOpenAIForFoundryImage\");\n\n // tag::adocUseOpenAIForFoundryImage[]\n OpenAiOfficialImageModel model = OpenAiOfficialImageModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"dall-e-3\")\n .azureDeploymentName(\"Dalle-3-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryImage[]\n\n Response answer = model.generate(\"Draw a CD album with a Pink Flamingo\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n }\n}\n"}, "cf1801181c5879d41ba73a930eb1057da388d7c1": {"t": 1785755502.8646574, "n": 3581, "h": "c9c643c97333a6e0", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport static com.openai.azure.AzureOpenAIServiceVersion.getV2025_01_01_PREVIEW;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialImageModel;\nimport dev.langchain4j.model.output.Response;\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useOpenAIOfficial();\n// useOpenAIForDeepSeek();\n// useOpenAIForFoundryChat();\n useOpenAIForFoundryImage();\n\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static final String AZURE_FOUNDRY_KEY = System.getenv(\"AZURE_OPENAI_KEY\");\n private static final String AZURE_FOUNDRY_ENDPOINT = System.getenv(\"AZURE_OPENAI_ENDPOINT\");\n\n private static void useOpenAIOfficial() {\n System.out.println(\"### useOpenAIOfficial\");\n\n // tag::adocSnippet[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(com.openai.models.ChatModel.GPT_4_1)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocSnippet[]\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n\n // ################################\n // ### AZURE FOUNDRY CHAT MODEL ###\n // ################################\n static void useOpenAIForFoundryChat() {\n System.out.println(\"### useOpenAIForFoundryChat\");\n\n // tag::adocUseOpenAIForFoundryChat[]\n OpenAiOfficialChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"Llama-4-Scout-17B-16E-Instruct\")\n .azureDeploymentName(\"Llama-4-Scout-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryChat[]\n\n String answer = model.chat(\"In one sentence, what is the best Pink Floyd album?\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n }\n\n // #################################\n // ### AZURE FOUNDRY IMAGE MODEL ###\n // #################################\n static void useOpenAIForFoundryImage() {\n System.out.println(\"### useOpenAIForFoundryImage\");\n\n // tag::adocUseOpenAIForFoundryImage[]\n OpenAiOfficialImageModel model = OpenAiOfficialImageModel.builder()\n .apiKey(AZURE_FOUNDRY_KEY)\n .baseUrl(AZURE_FOUNDRY_ENDPOINT)\n .modelName(\"dall-e-3\")\n .azureDeploymentName(\"Dalle-3-Deployment\")\n .azureOpenAIServiceVersion(getV2025_01_01_PREVIEW())\n .build();\n // end::adocUseOpenAIForFoundryImage[]\n\n Response answer = model.generate(\"Draw a CD album with a Pink Flamingo\");\n\n System.out.println(answer);\n System.out.println(\"##################\");\n }\n}\n"}, "2fbf29de342d472c81d06eb1c054c5e2246ebecf": {"t": 1785755504.0198145, "n": 1534, "h": "33f0ef389641b19a", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialChatModel;\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n// useOpenAIOfficial();\n useOpenAIForDeepSeek();\n\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n private static final String DEEPSEEK_API_KEY = System.getenv(\"DEEPSEEK_API_KEY\");\n\n private static void useOpenAIOfficial() {\n System.out.println(\"### useOpenAIOfficial\");\n\n // tag::adocSnippet[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(com.openai.models.ChatModel.GPT_4_1)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocSnippet[]\n }\n\n private static void useOpenAIForDeepSeek() {\n System.out.println(\"### useOpenAIForDeepSeek\");\n\n // tag::adocDeepSeek[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(DEEPSEEK_API_KEY)\n .baseUrl(\"https://api.deepseek.com\")\n .modelName(\"deepseek-chat\")\n .build();\n\n String answer = model.chat(\"When was the first Rolling Stones album released?\");\n\n System.out.println(answer);\n // end::adocDeepSeek[]\n }\n}\n"}, "41782e6b9f291ce926190992deb0a882af1e6bb7": {"t": 1785755509.7330928, "n": 961, "h": "5fdbeda8805a0ae9", "c": "package org.agoncal.fascicle.langchain4j.accessing.openaiofficial;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.model.chat.ChatModel;\nimport dev.langchain4j.model.openaiofficial.OpenAiOfficialChatModel;\n\n/**\n * @author Antonio Goncalves\n * http://www.antoniogoncalves.org\n * --\n */\npublic class MusicianAssistant {\n\n public static void main(String[] args) throws JsonProcessingException {\n\n useOpenAIOfficial();\n\n }\n\n private static final String OPENAI_API_KEY = System.getenv(\"OPENAI_API_KEY\");\n\n private static void useOpenAIOfficial() {\n System.out.println(\"### useOpenAIOfficial\");\n\n // tag::adocSnippet[]\n ChatModel model = OpenAiOfficialChatModel.builder()\n .apiKey(OPENAI_API_KEY)\n .modelName(com.openai.models.ChatModel.GPT_4_1)\n .build();\n\n String answer = model.chat(\"When was the first Beatles album released?\");\n\n System.out.println(answer);\n // end::adocSnippet[]\n }\n}\n"}}, "ai-models-accessing-models/deepseek/src/test/java/org/agoncal/fascicle/langchain4j/accessing/deepseek/MusicianAssistantTest.java": {"e27aacb379f8e871418cde853f5f36c96abcbe55": {"t": 1785745696.0426831, "n": 626, "h": "b51ac44969a0d687", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\n\n@EnabledIfEnvironmentVariable(named = \"DEEPSEEK_API_KEY\", matches = \".+\")\nclass MusicianAssistantTest {\n\n private MusicianAssistant assistant;\n\n @BeforeEach\n void setUp() {\n assistant = new MusicianAssistant();\n }\n\n @Test\n void shouldUseOpenAIForDeepSeek() {\n String answer = assistant.useOpenAIForDeepSeek();\n assertNotNull(answer);\n }\n}\n"}, "7a4a41066220c371ef75599f435891e16b9d699f": {"t": 1785755495.600612, "n": 626, "h": "b51ac44969a0d687", "c": "package org.agoncal.fascicle.langchain4j.accessing.deepseek;\n\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\n\n@EnabledIfEnvironmentVariable(named = \"DEEPSEEK_API_KEY\", matches = \".+\")\nclass MusicianAssistantTest {\n\n private MusicianAssistant assistant;\n\n @BeforeEach\n void setUp() {\n assistant = new MusicianAssistant();\n }\n\n @Test\n void shouldUseOpenAIForDeepSeek() {\n String answer = assistant.useOpenAIForDeepSeek();\n assertNotNull(answer);\n }\n}\n"}}, "ai-models-accessing-models/open-ai/src/test/java/org/agoncal/fascicle/langchain4j/accessing/openai/MusicianAssistantTest.java": {"e27aacb379f8e871418cde853f5f36c96abcbe55": {"t": 1785745708.493144, "n": 8390, "h": "c891706ecf73db02", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.output.Response;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\n@EnabledIfEnvironmentVariable(named = \"OPENAI_API_KEY\", matches = \".+\")\nclass MusicianAssistantTest {\n\n private MusicianAssistant assistant;\n\n @BeforeEach\n void setUp() {\n assistant = new MusicianAssistant();\n }\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n @Test\n void shouldUseLangChain4jInsteadSDK() {\n String answer = assistant.useLangChain4jInsteadSDK();\n\n assertNotNull(answer);\n assertTrue(answer.toLowerCase().contains(\"beatles\") || answer.contains(\"1963\") || answer.contains(\"Please\"));\n }\n\n @Test\n void shouldUseOpenAiLanguageTypeOfModel() {\n Response response = assistant.useOpenAiLanguageTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertNotNull(response.finishReason());\n assertNotNull(response.tokenUsage());\n }\n\n @Test\n void shouldUseOpenAiLanguageModel() {\n Response response = assistant.useOpenAiLanguageModel();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertNotNull(response.finishReason());\n assertNotNull(response.tokenUsage());\n assertTrue(response.tokenUsage().totalTokenCount() > 0);\n }\n\n @Test\n void shouldUseOpenAiLanguageModelPrompt() {\n Response response = assistant.useOpenAiLanguageModelPrompt();\n\n assertNotNull(response);\n assertNotNull(response.content());\n }\n\n @Test\n void shouldUseOpenAiLanguageModelBuilder() {\n Response response = assistant.useOpenAiLanguageModelBuilder();\n\n assertNotNull(response);\n assertNotNull(response.content());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n @Test\n void shouldUseOpenAiChatTypeOfModel() {\n ChatResponse response = assistant.useOpenAiChatTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n assertTrue(response.aiMessage().text().toLowerCase().contains(\"beethoven\"));\n }\n\n @Test\n void shouldUseOpenAiSimpleConf() {\n String content = assistant.useOpenAiSimpleConf();\n\n assertNotNull(content);\n assertTrue(content.length() > 0);\n }\n\n @Test\n void shouldUseOpenAiSimpleConf2() {\n String content = assistant.useOpenAiSimpleConf2();\n\n assertNotNull(content);\n assertTrue(content.length() > 0);\n }\n\n @Test\n void shouldUseOpenAiRichConf() {\n String completion = assistant.useOpenAiRichConf();\n\n assertNotNull(completion);\n assertTrue(completion.toLowerCase().contains(\"rolling stones\") || completion.contains(\"1964\"));\n }\n\n @Test\n void shouldUseOpenAiChatRequest() {\n ChatResponse response = assistant.useOpenAiChatRequest();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n @Test\n void shouldUseOpenAiChatRequestDefault() {\n ChatResponse response = assistant.useOpenAiChatRequestDefault();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n @Test\n void shouldUseOpenAiResponseString() {\n String response = assistant.useOpenAiResponseString();\n\n assertNotNull(response);\n assertTrue(response.length() > 0);\n }\n\n @Test\n void shouldUseOpenAiChatResponse() {\n ChatResponse response = assistant.useOpenAiChatResponse();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n assertNotNull(response.id());\n assertNotNull(response.finishReason());\n assertNotNull(response.modelName());\n }\n\n @Test\n void shouldUseOpenAiChatModelTemperatureOne() {\n String completion = assistant.useOpenAiChatModelTemperatureOne();\n\n assertNotNull(completion);\n assertTrue(completion.toLowerCase().contains(\"beatles\"));\n }\n\n @Test\n void shouldUseOpenAiChatModelTemperatureZero() {\n String completion = assistant.useOpenAiChatModelTemperatureZero();\n\n assertNotNull(completion);\n assertTrue(completion.toLowerCase().contains(\"beatles\"));\n }\n\n @Test\n void shouldUseOpenAiChatModelAiMessage() {\n ChatResponse response = assistant.useOpenAiChatModelAiMessage();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n @Test\n void shouldUseOpenAiStreamingChatTypeOfModel() {\n ChatResponse response = assistant.useOpenAiStreamingChatTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n @Test\n void shouldUseOpenAiStreaming() {\n ChatResponse response = assistant.useOpenAiStreaming();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n @Test\n void shouldUseOpenAiModerationTypeOfModel() {\n Response response = assistant.useOpenAiModerationTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertTrue(response.content().flagged());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n @Test\n void shouldUseTypedUntypedResponseString() {\n String response = assistant.useTypedUntypedResponseString();\n\n assertNotNull(response);\n assertTrue(response.toLowerCase().contains(\"orwell\") || response.toLowerCase().contains(\"george\"));\n }\n\n @Test\n void shouldUseTypedUntypedResponseStringOneLine() {\n String response = assistant.useTypedUntypedResponseStringOneLine();\n\n assertNotNull(response);\n }\n\n @Test\n void shouldUseTypedUntypedResponseUserMessage() {\n ChatResponse response = assistant.useTypedUntypedResponseUserMessage();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n assertNotNull(response.tokenUsage());\n assertNotNull(response.finishReason());\n }\n\n @Test\n void shouldUseTypedUntypedResponseUserMessageOneLine() {\n String response = assistant.useTypedUntypedResponseUserMessageOneLine();\n\n assertNotNull(response);\n }\n\n @Test\n void shouldUseTypedUntypedResponseEmbedding() {\n Response response = assistant.useTypedUntypedResponseEmbedding();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertTrue(response.content().dimension() > 0);\n assertNotNull(response.content().vectorAsList());\n }\n\n @Test\n void shouldUseJSONResponseFormat() throws JsonProcessingException {\n ChatResponse response = assistant.useJSONResponseFormat();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n String text = response.aiMessage().text();\n assertTrue(text.contains(\"name\"));\n }\n\n @Test\n void shouldDontKnow() {\n SystemMessage message = assistant.dontKnow();\n\n assertNotNull(message);\n assertTrue(message.text().contains(\"Vintage Store\"));\n }\n\n // ###################################\n // ### EXPENSIVE TESTS (DISABLED) ###\n // ###################################\n // These tests are disabled by default as they incur costs\n // Uncomment to run them manually\n\n // @Test\n // void shouldUseOpenAiImageTypeOfModel() {\n // Response response = assistant.useOpenAiImageTypeOfModel();\n // assertNotNull(response);\n // assertNotNull(response.content());\n // assertNotNull(response.content().url());\n // }\n\n // @Test\n // void shouldUseTypedUntypedResponseImage() {\n // Response response = assistant.useTypedUntypedResponseImage();\n // assertNotNull(response);\n // assertNotNull(response.content());\n // }\n\n // @Test\n // @EnabledIfEnvironmentVariable(named = \"DEEPSEEK_API_KEY\", matches = \".+\")\n // void shouldUseOpenAIForDeepSeek() {\n // String answer = assistant.useOpenAIForDeepSeek();\n // assertNotNull(answer);\n // }\n}\n"}, "cede15ec015fd0569f2d8c505742d482b1722ec8": {"t": 1785755496.647076, "n": 8390, "h": "c891706ecf73db02", "c": "package org.agoncal.fascicle.langchain4j.accessing.openai;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport dev.langchain4j.data.embedding.Embedding;\nimport dev.langchain4j.data.image.Image;\nimport dev.langchain4j.data.message.SystemMessage;\nimport dev.langchain4j.model.chat.response.ChatResponse;\nimport dev.langchain4j.model.moderation.Moderation;\nimport dev.langchain4j.model.output.Response;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\n@EnabledIfEnvironmentVariable(named = \"OPENAI_API_KEY\", matches = \".+\")\nclass MusicianAssistantTest {\n\n private MusicianAssistant assistant;\n\n @BeforeEach\n void setUp() {\n assistant = new MusicianAssistant();\n }\n\n // #############################\n // ### OPENAI LANGUAGE MODEL ###\n // #############################\n @Test\n void shouldUseLangChain4jInsteadSDK() {\n String answer = assistant.useLangChain4jInsteadSDK();\n\n assertNotNull(answer);\n assertTrue(answer.toLowerCase().contains(\"beatles\") || answer.contains(\"1963\") || answer.contains(\"Please\"));\n }\n\n @Test\n void shouldUseOpenAiLanguageTypeOfModel() {\n Response response = assistant.useOpenAiLanguageTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertNotNull(response.finishReason());\n assertNotNull(response.tokenUsage());\n }\n\n @Test\n void shouldUseOpenAiLanguageModel() {\n Response response = assistant.useOpenAiLanguageModel();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertNotNull(response.finishReason());\n assertNotNull(response.tokenUsage());\n assertTrue(response.tokenUsage().totalTokenCount() > 0);\n }\n\n @Test\n void shouldUseOpenAiLanguageModelPrompt() {\n Response response = assistant.useOpenAiLanguageModelPrompt();\n\n assertNotNull(response);\n assertNotNull(response.content());\n }\n\n @Test\n void shouldUseOpenAiLanguageModelBuilder() {\n Response response = assistant.useOpenAiLanguageModelBuilder();\n\n assertNotNull(response);\n assertNotNull(response.content());\n }\n\n // #########################\n // ### OPENAI CHAT MODEL ###\n // #########################\n @Test\n void shouldUseOpenAiChatTypeOfModel() {\n ChatResponse response = assistant.useOpenAiChatTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n assertTrue(response.aiMessage().text().toLowerCase().contains(\"beethoven\"));\n }\n\n @Test\n void shouldUseOpenAiSimpleConf() {\n String content = assistant.useOpenAiSimpleConf();\n\n assertNotNull(content);\n assertTrue(content.length() > 0);\n }\n\n @Test\n void shouldUseOpenAiSimpleConf2() {\n String content = assistant.useOpenAiSimpleConf2();\n\n assertNotNull(content);\n assertTrue(content.length() > 0);\n }\n\n @Test\n void shouldUseOpenAiRichConf() {\n String completion = assistant.useOpenAiRichConf();\n\n assertNotNull(completion);\n assertTrue(completion.toLowerCase().contains(\"rolling stones\") || completion.contains(\"1964\"));\n }\n\n @Test\n void shouldUseOpenAiChatRequest() {\n ChatResponse response = assistant.useOpenAiChatRequest();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n @Test\n void shouldUseOpenAiChatRequestDefault() {\n ChatResponse response = assistant.useOpenAiChatRequestDefault();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n @Test\n void shouldUseOpenAiResponseString() {\n String response = assistant.useOpenAiResponseString();\n\n assertNotNull(response);\n assertTrue(response.length() > 0);\n }\n\n @Test\n void shouldUseOpenAiChatResponse() {\n ChatResponse response = assistant.useOpenAiChatResponse();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n assertNotNull(response.id());\n assertNotNull(response.finishReason());\n assertNotNull(response.modelName());\n }\n\n @Test\n void shouldUseOpenAiChatModelTemperatureOne() {\n String completion = assistant.useOpenAiChatModelTemperatureOne();\n\n assertNotNull(completion);\n assertTrue(completion.toLowerCase().contains(\"beatles\"));\n }\n\n @Test\n void shouldUseOpenAiChatModelTemperatureZero() {\n String completion = assistant.useOpenAiChatModelTemperatureZero();\n\n assertNotNull(completion);\n assertTrue(completion.toLowerCase().contains(\"beatles\"));\n }\n\n @Test\n void shouldUseOpenAiChatModelAiMessage() {\n ChatResponse response = assistant.useOpenAiChatModelAiMessage();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n // ###################################\n // ### OPENAI STREAMING CHAT MODEL ###\n // ###################################\n @Test\n void shouldUseOpenAiStreamingChatTypeOfModel() {\n ChatResponse response = assistant.useOpenAiStreamingChatTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n @Test\n void shouldUseOpenAiStreaming() {\n ChatResponse response = assistant.useOpenAiStreaming();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n }\n\n // ###############################\n // ### OPENAI MODERATION MODEL ###\n // ###############################\n @Test\n void shouldUseOpenAiModerationTypeOfModel() {\n Response response = assistant.useOpenAiModerationTypeOfModel();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertTrue(response.content().flagged());\n }\n\n // ##################################\n // ### TYPED AND UNTYPED RESPONSE ###\n // ##################################\n @Test\n void shouldUseTypedUntypedResponseString() {\n String response = assistant.useTypedUntypedResponseString();\n\n assertNotNull(response);\n assertTrue(response.toLowerCase().contains(\"orwell\") || response.toLowerCase().contains(\"george\"));\n }\n\n @Test\n void shouldUseTypedUntypedResponseStringOneLine() {\n String response = assistant.useTypedUntypedResponseStringOneLine();\n\n assertNotNull(response);\n }\n\n @Test\n void shouldUseTypedUntypedResponseUserMessage() {\n ChatResponse response = assistant.useTypedUntypedResponseUserMessage();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n assertNotNull(response.tokenUsage());\n assertNotNull(response.finishReason());\n }\n\n @Test\n void shouldUseTypedUntypedResponseUserMessageOneLine() {\n String response = assistant.useTypedUntypedResponseUserMessageOneLine();\n\n assertNotNull(response);\n }\n\n @Test\n void shouldUseTypedUntypedResponseEmbedding() {\n Response response = assistant.useTypedUntypedResponseEmbedding();\n\n assertNotNull(response);\n assertNotNull(response.content());\n assertTrue(response.content().dimension() > 0);\n assertNotNull(response.content().vectorAsList());\n }\n\n @Test\n void shouldUseJSONResponseFormat() throws JsonProcessingException {\n ChatResponse response = assistant.useJSONResponseFormat();\n\n assertNotNull(response);\n assertNotNull(response.aiMessage());\n String text = response.aiMessage().text();\n assertTrue(text.contains(\"name\"));\n }\n\n @Test\n void shouldDontKnow() {\n SystemMessage message = assistant.dontKnow();\n\n assertNotNull(message);\n assertTrue(message.text().contains(\"Vintage Store\"));\n }\n\n // ###################################\n // ### EXPENSIVE TESTS (DISABLED) ###\n // ###################################\n // These tests are disabled by default as they incur costs\n // Uncomment to run them manually\n\n // @Test\n // void shouldUseOpenAiImageTypeOfModel() {\n // Response response = assistant.useOpenAiImageTypeOfModel();\n // assertNotNull(response);\n // assertNotNull(response.content());\n // assertNotNull(response.content().url());\n // }\n\n // @Test\n // void shouldUseTypedUntypedResponseImage() {\n // Response response = assistant.useTypedUntypedResponseImage();\n // assertNotNull(response);\n // assertNotNull(response.content());\n // }\n\n // @Test\n // @EnabledIfEnvironmentVariable(named = \"DEEPSEEK_API_KEY\", matches = \".+\")\n // void shouldUseOpenAIForDeepSeek() {\n // String answer = assistant.useOpenAIForDeepSeek();\n // assertNotNull(answer);\n // }\n}\n"}}}}