{"id":1236,"date":"2024-04-28T01:31:50","date_gmt":"2024-04-28T01:31:50","guid":{"rendered":"https:\/\/www.nicekj.com\/?p=1236"},"modified":"2024-04-28T01:32:17","modified_gmt":"2024-04-28T01:32:17","slug":"guoneiliyongazureopenaizaijavazhongshiyongchatgpthedallemoxing","status":"publish","type":"post","link":"https:\/\/www.nicekj.com\/guoneiliyongazureopenaizaijavazhongshiyongchatgpthedallemoxing.html","title":{"rendered":"\u56fd\u5185\u5229\u7528Azure OpenAI\u5728Java\u4e2d\u4f7f\u7528ChatGPT\u548cDALL-E\u6a21\u578b"},"content":{"rendered":"<p>\u5728ChatGPT\u548c\u5404\u7c7b\u751f\u6210\u5f0fAI\u5927\u70ed\u7684\u4eca\u5929\uff0c\u5229\u7528AI\u8d4b\u80fd\u4ea7\u54c1\u5f00\u53d1\u548c\u5185\u5bb9\u521b\u4f5c\u7684\u4ef7\u503c\u4e0d\u8a00\u800c\u55bb\uff0c\u5728\u5de5\u4f5c\u548c\u751f\u6d3b\u4e2d\u5145\u5206\u5229\u7528ChatGPT\u53ef\u4ee5\u5927\u5e45\u63d0\u5347\u6548\u7387\u3002\u7136\u800c\uff0c\u7531\u4e8e\u5728\u4e2d\u56fd\u7684\u8bbf\u95ee\u9650\u5236\uff0c\u76f4\u63a5\u4f7f\u7528OpenAI\u7684ChatGPT\uff0c\u5bf9\u4e8e\u5e0c\u671b\u5229\u7528\u8fd9\u9879\u6280\u672f\u7684\u5f00\u53d1\u8005\u548c\u4f01\u4e1a\u6765\u8bf4\u662f\u4e00\u4e2a\u5de8\u5927\u7684\u6311\u6218\u3002\u672c\u6587\u5c06\u5206\u4eab\uff0c\u5728Java\u73af\u5883\u4e0b\u901a\u8fc7Azure OpenAI\u4f7f\u7528GPT\u5927\u6a21\u578b\u8fdb\u884c\u5f00\u53d1\uff0c\u5e0c\u671b\u5e2e\u52a9\u5927\u5bb6\u63a8\u52a8\u9879\u76ee\u521b\u65b0\u548c\u63d0\u6548\u3002<\/p>\n<p>\u672c\u6587\u6e90\u4ee3\u7801\uff1a<\/p>\n<p><a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FHydraLab%2Fblob%2Fmain%2Fcenter%2Fsrc%2Fmain%2Fjava%2Fcom%2Fmicrosoft%2Fhydralab%2Fcenter%2Fopenai%2FAzureOpenAIServiceClient.java%23L16\" target=\"_blank\" title=\"https:\/\/github.com\/microsoft\/HydraLab\/blob\/main\/center\/src\/main\/java\/com\/microsoft\/hydralab\/center\/openai\/AzureOpenAIServiceClient.java#L16\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">AzureOpenAIServiceClient.java<\/a><\/p>\n<h2 data-id=\"heading-0\">\u5f00\u901aAzure\u670d\u52a1\u548c\u8ba2\u9605<\/h2>\n<p>\u9996\u5148\u4f60\u9700\u8981\u6709\u4e00\u4e2a\u5fae\u8f6f\u8d26\u6237\uff0c\u53ef\u4ee5\u5230\u4efb\u610f\u5fae\u8f6f\u670d\u52a1\u7f51\u7ad9\u4e0a\u6ce8\u518c\uff0c\u6bd4\u5982\uff1a<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fazure.microsoft.com%2F\" target=\"_blank\" title=\"https:\/\/azure.microsoft.com\/\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">Microsoft Azure<\/a>\u3002\u6ce8\u518c\u7684\u65f6\u5019\u5730\u533a\u9009\u62e9\u7f8e\u56fd\u7684\u8bdd\u53ef\u4ee5\u4e3a\u540e\u9762\u4f7f\u7528\u5fc5\u5e94Chat\u63d0\u4f9b\u65b9\u4fbf\u3002<\/p>\n<p>\u7136\u540e\uff0c\u8bbf\u95ee<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fportal.azure.com\" target=\"_blank\" title=\"https:\/\/portal.azure.com\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">Azure\u63a7\u5236\u53f0<\/a>\u5f00\u901aAzure\u670d\u52a1\uff0c\u5e76\u521b\u5efa\u8ba2\u9605\uff0c\u7b2c\u4e00\u6b21\u6ce8\u518c\u7684\u8bdd\u4f1a\u6709\u4e00\u5b9a\u7684\u514d\u8d39\u8bd5\u7528\u989d\u5ea6\u3002\u63a5\u7740\u8bbf\u95ee<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fazure.microsoft.com%2Fen-us%2Fproducts%2Fcognitive-services%2Fopenai-service%2F\" target=\"_blank\" title=\"https:\/\/azure.microsoft.com\/en-us\/products\/cognitive-services\/openai-service\/\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">Azure OpenAI Service<\/a>\u4e86\u89e3\u5fae\u8f6f\u63d0\u4f9b\u7684OpenAI\u6a21\u578b\u7684\u670d\u52a1\uff0c\u5e76\u5728\u4f60\u7684<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fportal.azure.com\" target=\"_blank\" title=\"https:\/\/portal.azure.com\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">Azure\u63a7\u5236\u53f0<\/a>\u4e0a\u5f00\u901aAzure OpenAI\u670d\u52a1\u3002\u53ef\u4ee5\u9605\u8bfb\u8fd9\u7bc7\u6587\u7ae0<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fazure.microsoft.com%2Fen-us%2Fblog%2Fintroducing-gpt4-in-azure-openai-service%2F\" target=\"_blank\" title=\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-gpt4-in-azure-openai-service\/\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">Introducing GPT-4 in Azure OpenAI Service<\/a>\u83b7\u53d6\u7533\u8bf7\u94fe\u63a5\uff0c\u586b\u5199<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fcustomervoice.microsoft.com%2FPages%2FResponsePage.aspx%3Fid%3Dv4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUOFA5Qk1UWDRBMjg0WFhPMkIzTzhKQ1dWNyQlQCN0PWcu\" target=\"_blank\" title=\"https:\/\/customervoice.microsoft.com\/Pages\/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUOFA5Qk1UWDRBMjg0WFhPMkIzTzhKQ1dWNyQlQCN0PWcu\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">\u8868\u5355 &#8220;Request Access to Azure OpenAI Service&#8221;<\/a>\u8fdb\u884c\u5bf9\u6240\u9700\u8981\u7684\u6a21\u578b\u8fdb\u884c\u7533\u8bf7\u3002<\/p>\n<p>\u5f00\u901a\u5b8c\u6210\u4e4b\u540e\uff0c\u4f60\u7684Azure\u91cc\u5c31\u4f1a\u591a\u4e00\u4e2a\u8fd9\u6837\u7684\u56fe\u6807\u4e86\uff1a<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/50abc7188e50aefbe6d4d1c7a31bd7a8.png\" alt=\"AzureOpenAIInPortal.png\" \/><\/figure>\n<\/p>\n<p>\u968f\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5728<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Foai.azure.com%2Fportal%2F\" target=\"_blank\" title=\"https:\/\/oai.azure.com\/portal\/\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">Azure AI studio<\/a>\u4e2d\u521b\u5efa\u548c\u7ba1\u7406\u6a21\u578bDeployments\uff1a<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/077ba636322eeed85feb1507ffa8ff09.png\" alt=\"CreateDeployments.png\" \/><\/figure>\n<\/p>\n<p>\u9009\u62e9\u4f60\u7684\u6a21\u578b\uff1a<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/0a36392e85db06c4472eac12993e2008.png\" alt=\"CreateDeploymentsDialog.png\" \/><\/figure>\n<\/p>\n<p>\u521b\u5efa\u6210\u529f\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5229\u7528\u793a\u4f8b\u4ee3\u7801\uff0c\u5728Java\u4e2d\u901a\u8fc7Azure OpenAI\u7684API\u8bf7\u6c42\u5b8c\u6210\u4f7f\u7528Chat\u529f\u80fd\u4e86\u3002Azure AI Studio\u4e0a\u8fd8\u6709\u5f88\u591a\u597d\u73a9\u7684\u529f\u80fd\uff0c\u5982\u679c\u4f60\u7533\u8bf7\u4e86OpenAI\u7684\u56fe\u7247\u751f\u6210\u6a21\u578bDALL\u00b7E\u7684\u8bbf\u95ee\u6743\u9650\uff0c\u90a3\u4e48\u8fd9\u91cc\u8fd8\u53ef\u4ee5\u8bd5\u7528\u201cDALL\u00b7E playground\u201d\u6765\u6839\u636e\u4f60\u7684\u63cf\u8ff0\u751f\u6210\u56fe\u7247\uff1a<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/fe5e4f63486341457e97d1dfeb7de9e4.png\" alt=\"DALLE.png\" \/><\/figure>\n<\/p>\n<p>\u9664\u6b64\u4e4b\u5916\uff0c\u4e5f\u53ef\u4ee5\u5728\u8fd9\u91cc\u4f7f\u7528\u804a\u5929\u529f\u80fd\u548c\u6587\u672c\u5b8c\u6210\u529f\u80fd\uff1a<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/02c1095f0239f5342f107d1ee9bdfba6.png\" alt=\"chatStudio.png\" \/><\/figure>\n<\/p>\n<h2 data-id=\"heading-1\">\u901a\u8fc7\u4ee3\u7801\u8c03\u7528\u670d\u52a1<\/h2>\n<p>\u901a\u8fc7<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FHydraLab%2Fblob%2Fmain%2Fcenter%2Fsrc%2Fmain%2Fjava%2Fcom%2Fmicrosoft%2Fhydralab%2Fcenter%2Fopenai%2FAzureOpenAIServiceClient.java%23L16\" target=\"_blank\" title=\"https:\/\/github.com\/microsoft\/HydraLab\/blob\/main\/center\/src\/main\/java\/com\/microsoft\/hydralab\/center\/openai\/AzureOpenAIServiceClient.java#L16\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">\u793a\u4f8b\u4ee3\u7801AzureOpenAIServiceClient.java<\/a>\u6211\u4eec\u53ef\u4ee5\u4e86\u89e3\u5230\uff0c\u5b9e\u9645\u4e0a\u4e0eAzure OpenAI\u670d\u52a1\u8fdb\u884c\u901a\u4fe1\u7684\u4e3b\u8981\u662f\u901a\u8fc7\u5411\u6211\u4eec\u5728Azure\u4e2d\u6ce8\u518c\u670d\u52a1\u4e2d\u7684<code>endpoint<\/code>\u53d1\u9001HTTP\u8bf7\u6c42\uff0c\u6765\u5b8c\u6210\u7684\u3002\u5728\u8fd9\u6bb5\u4ee3\u7801\u4e2d\uff0c\u9996\u5148\u5bfc\u5165\u4e86\u5fc5\u8981\u7684HTTP\u8bf7\u6c42\u4f9d\u8d56\u5e93\u3002\u7136\u540e\u5b9a\u4e49\u4e86\u4e00\u4e2a\u540d\u4e3a<code>AzureOpenAIServiceClient<\/code>\u7684\u7c7b\uff0c\u5b83\u7ef4\u62a4\u4e86\u4e0eAzure OpenAI\u670d\u52a1\u901a\u4fe1\u6240\u9700\u7684\u4e00\u4e9b\u914d\u7f6e\u53c2\u6570\uff0c\u5305\u62ec\uff1a<\/p>\n<ul>\n<li>API\u5bc6\u94a5(<code>apiKey<\/code>)\uff1a\u53ef\u4ee5\u5728\u4f60\u7684Azure\u63a7\u5236\u53f0\u76f8\u5e94\u7684OpenAI service\u9875\u9762\u627e\u5230\u3002\u89c1\u4e0b\u56fe\u3002<\/li>\n<li>\u670d\u52a1\u5165\u53e3\u5730\u5740URL(<code>endpoint<\/code>)\uff1a\u4e00\u822c\u5f62\u5982<code>https:\/\/{\u4f60\u7684AzureOpenAI\u670d\u52a1\u540d\u5b57}.openai.azure.com<\/code>\u3002\u53ef\u4ee5\u5728\u4f60\u7684Overview\u9875\u9762\u770b\u5230\u3002<\/li>\n<li>\u6a21\u578b\u90e8\u7f72\u540d(<code>deployment<\/code>)\uff1a\u4f60\u4e4b\u524d\u8d77\u7684\u6a21\u578b\u540d\u5b57\u3002<\/li>\n<li>API\u7248\u672c(<code>apiVersion<\/code>)\uff1a\u76ee\u524d\u7684\u5e38\u7528\u7248\u672c\u662f<code>2023-03-15-preview<\/code>\u3002<\/li>\n<\/ul>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/e953b4ff3bace8eaa12619242cb427e7.png\" alt=\"keys.png\" \/><\/figure>\n<\/p>\n<p>\u76ee\u524d\u7684\u6838\u5fc3\u529f\u80fd\uff0c<code>chatCompletion<\/code>\u65b9\u6cd5\uff0c\u63a5\u53d7\u4e00\u4e2a<code>ChatRequest<\/code>\u5bf9\u8c61\u548c<code>operation<\/code>\uff08\u8fd9\u91cc\u5176\u5b9e\u5c31\u662f<code>chat\/completions<\/code>\uff09\u4f5c\u4e3a\u53c2\u6570\uff0c\u5e76\u8c03\u7528<code>callAzureAPI<\/code>\u65b9\u6cd5\uff0c\u5c06\u8bf7\u6c42\u5bf9\u8c61\u8f6c\u6362\u4e3aJSON\u5b57\u7b26\u4e32\uff0c\u5e76\u53d1\u9001\u5230OpenAI RESTful API\u670d\u52a1\u5b8c\u6210\u8bf7\u6c42\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">java<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-java code-block-extension-codeShowNum\" lang=\"java\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">    <span class=\"hljs-keyword\">private<\/span> String <span class=\"hljs-title function_\">callAzureAPI<\/span><span class=\"hljs-params\">(String operation, String requestBodyString)<\/span> {<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">        <span class=\"hljs-type\">MediaType<\/span> <span class=\"hljs-variable\">mediaType<\/span> <span class=\"hljs-operator\">=<\/span> MediaType.parse(<span class=\"hljs-string\">\"application\/json\"<\/span>);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">        <span class=\"hljs-type\">String<\/span> <span class=\"hljs-variable\">url<\/span> <span class=\"hljs-operator\">=<\/span> String.format(<span class=\"hljs-string\">\"%s\/openai\/deployments\/%s\/%s?api-version=%s\"<\/span>, endpoint, deployment, operation, apiVersion);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">        logger.info(<span class=\"hljs-string\">\"Request body: {}\"<\/span>, requestBodyString);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">        <span class=\"hljs-type\">RequestBody<\/span> <span class=\"hljs-variable\">body<\/span> <span class=\"hljs-operator\">=<\/span> RequestBody.create(requestBodyString, mediaType);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">        <span class=\"hljs-type\">Request<\/span> <span class=\"hljs-variable\">httpRequest<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Request<\/span>.Builder().url(url).post(body)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">                .addHeader(<span class=\"hljs-string\">\"api-key\"<\/span>, apiKey).build();<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">        <span class=\"hljs-keyword\">try<\/span> (<span class=\"hljs-type\">Response<\/span> <span class=\"hljs-variable\">response<\/span> <span class=\"hljs-operator\">=<\/span> client.newCall(httpRequest).execute()) {<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">            <span class=\"hljs-keyword\">if<\/span> (!response.isSuccessful()) {<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">                <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">RuntimeException<\/span>(<span class=\"hljs-string\">\"Unexpected response code: \"<\/span> + response);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">            }<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">            <span class=\"hljs-keyword\">return<\/span> Objects.requireNonNull(response.body()).string();<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">        } <span class=\"hljs-keyword\">catch<\/span> (Exception e) {<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">            <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">RuntimeException<\/span>(<span class=\"hljs-string\">\"Error occurred while invoking Azure OpenAI API: \"<\/span> + e.getMessage(), e);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">        }<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">    }<\/span>\n<\/code><\/pre>\n<p>\u5176\u4e2d\uff0c<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FHydraLab%2Fblob%2Fmain%2Fcenter%2Fsrc%2Fmain%2Fjava%2Fcom%2Fmicrosoft%2Fhydralab%2Fcenter%2Fopenai%2FChatRequest.java\" target=\"_blank\" title=\"https:\/\/github.com\/microsoft\/HydraLab\/blob\/main\/center\/src\/main\/java\/com\/microsoft\/hydralab\/center\/openai\/ChatRequest.java\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">ChatRequest<\/a>\u5bf9\u8c61\u4e2d\u7684\u51e0\u4e2a\u53c2\u6570\u7684\u542b\u4e49\u89e3\u91ca\u5982\u4e0b\uff1a<\/p>\n<p>Azure OpenAI HTTP\u8bf7\u6c42\u4e2d\u7684\u51e0\u4e2a\u53c2\u6570\u7684\u542b\u4e49\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li><strong>max_tokens<\/strong>: \u751f\u6210\u6587\u672c\u7684\u6700\u5927\u957f\u5ea6\u3002<\/li>\n<li><strong>temperature<\/strong>: \u751f\u6210\u6587\u672c\u7684\u968f\u673a\u6027\uff0c\u53d6\u503c\u4ece0\u52301\uff0c\u8f83\u9ad8\u7684\u201c\u6e29\u5ea6\u201d\u503c\u610f\u5473\u7740\u6a21\u578b\u5c06\u5192\u66f4\u591a\u7684\u98ce\u9669\u30020\u8868\u793a\u968f\u673a\u6027\u6700\u4f4e\uff0c\u521b\u9020\u6027\u6700\u5dee\u3002<\/li>\n<li><strong>frequency_penalty<\/strong>: \u4f7f\u7528\u8bcd\u9891\u60e9\u7f5a\u3002\u8f83\u9ad8\u7684\u9891\u7387\u60e9\u7f5a\u5c06\u963b\u6b62\u6a21\u578b\u91cd\u590d\u3002<\/li>\n<li><strong>presence_penalty<\/strong>: \u4f7f\u7528\u5b58\u5728\u60e9\u7f5a\u3002\u8f83\u9ad8\u7684\u5b58\u5728\u60e9\u7f5a\u5c06\u9f13\u52b1\u6a21\u578b\u4e13\u6ce8\u4e8e\u8f93\u5165\u63d0\u793a\u672c\u8eab\u3002<\/li>\n<li><strong>top_p<\/strong>: \u4ece\u6a21\u578b\u9884\u6d4b\u4e2d\u9009\u62e9\u6982\u7387\u6700\u9ad8\u7684\u6807\u8bb0\uff0c\u76f4\u5230\u8fbe\u5230\u6307\u5b9a\u7684\u603b\u6982\u7387\u3002\u9ed8\u8ba4\u4e3a1\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u4e00\u65e6\u8be5\u5206\u5e03\u8d85\u8fc7top_p\u503c\uff0c\u5c31\u4f1a\u505c\u6b62\u751f\u6210\u6587\u672c\u3002\u4f8b\u5982\uff0ctop_p\u4e3a0.3\u8868\u793a\u4ec5\u8003\u8651\u7ec4\u6210\u524d30\uff05\u6982\u7387\u8d28\u91cf\u7684\u6807\u8bb0\u3002<\/li>\n<li><strong>stop<\/strong>: \u505c\u6b62\u751f\u6210\u6587\u672c\uff0c\u5f53\u6a21\u578b\u751f\u6210\u67d0\u4e9b\u6307\u5b9a\u5b57\u7b26\u65f6\uff0c\u5c31\u505c\u6b62\u4e0d\u5728\u751f\u6210\u3002\u9ed8\u8ba4\u4e3a\u7a7a\u3002<\/li>\n<\/ul>\n<h3 data-id=\"heading-2\">\u4ee3\u7801\u4f7f\u7528\u793a\u4f8b<\/h3>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5199\u4e00\u4e2a\u7b80\u5355\u7684\u7528\u4f8b\uff0c\u6765\u8bd5\u7528\u8be5\u529f\u80fd\u4e86\uff0c\u5148\u8ba9\u5b83\u8bb2\u4e2a\u7b11\u8bdd\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">java<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-java code-block-extension-codeShowNum\" lang=\"java\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">    <span class=\"hljs-type\">AzureOpenAIServiceClient<\/span> <span class=\"hljs-variable\">azureOpenAIServiceClient<\/span> <span class=\"hljs-operator\">=<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">            <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">AzureOpenAIServiceClient<\/span>(apiKey, deployment, endpoint, apiVersion);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    <span class=\"hljs-type\">ChatRequest<\/span> <span class=\"hljs-variable\">request<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">ChatRequest<\/span>();<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    request.setTemperature(<span class=\"hljs-number\">0.9<\/span>);<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    request.setMessages(Arrays.asList(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">            <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">ChatMessage<\/span>(ChatMessage.Role.SYSTEM, <span class=\"hljs-string\">\"You are an AI assistant that helps people find fun and jokes, to make people laugh a lot.\"<\/span>),<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">            <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">ChatMessage<\/span>(ChatMessage.Role.USER, <span class=\"hljs-string\">\"tell me 3 jokes\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    ));<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    logger.info(azureOpenAIServiceClient.chatCompletion(request));<\/span>\n<\/code><\/pre>\n<p>\u5b8c\u6210\u4e00\u6b21\u5c2c\u804a\uff0c\u5f97\u5230\u5f88\u96beget\u5230\u7b11\u70b9\u7684\u4e09\u5219\u7b11\u8bdd\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">json<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-json code-block-extension-codeShowNum\" lang=\"json\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-punctuation\">{<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">    <span class=\"hljs-attr\">\"id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"***\"<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    <span class=\"hljs-attr\">\"object\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"chat.completion\"<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    <span class=\"hljs-attr\">\"created\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">1680000000<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    <span class=\"hljs-attr\">\"model\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"gpt-35-turbo\"<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    <span class=\"hljs-attr\">\"choices\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-punctuation\">[<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">        <span class=\"hljs-punctuation\">{<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">            <span class=\"hljs-attr\">\"index\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">0<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">            <span class=\"hljs-attr\">\"finish_reason\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"stop\"<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">            <span class=\"hljs-attr\">\"message\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-punctuation\">{<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">                <span class=\"hljs-attr\">\"role\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"assistant\"<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">                <span class=\"hljs-attr\">\"content\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"Sure, here are three jokes for you:nn1. Why don't scientists trust atoms? Because they make up everything!nn2. Why did the tomato turn red? Because it saw the salad dressing!nn3. Why did the bicycle fall over? Because it was two-tired!\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">            <span class=\"hljs-punctuation\">}<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">        <span class=\"hljs-punctuation\">}<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">    <span class=\"hljs-punctuation\">]<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">    <span class=\"hljs-attr\">\"usage\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-punctuation\">{<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">        <span class=\"hljs-attr\">\"completion_tokens\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">14<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">        <span class=\"hljs-attr\">\"prompt_tokens\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">37<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">        <span class=\"hljs-attr\">\"total_tokens\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">51<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">    <span class=\"hljs-punctuation\">}<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><span class=\"hljs-punctuation\">}<\/span><\/span>\n<\/code><\/pre>\n<p>\u8bd5\u7528\u4e00\u4e0b\u5c31\u53ef\u4ee5\u53d1\u73b0\uff0c\u5168\u7a0b\u4f7f\u7528<strong>\u56fd\u5185\u7f51\u7edc<\/strong>\u4e5f\u53ef\u4ee5\u6b63\u5e38\u8c03\u7528\uff0c\u6ca1\u6709\u4efb\u4f55\u95ee\u9898\u3002<\/p>\n<p>\u6b64\u5916\uff0c\u4ee3\u7801\u4e2d\u8fd8\u63d0\u4f9b\u4e86<code>callAzureOpenAIImageAPI<\/code>\u65b9\u6cd5\uff0c\u5411Azure OpenAI\u670d\u52a1\u53d1\u9001\u4e00\u4e2a\u56fe\u50cf\u751f\u6210\u7684API\u8bf7\u6c42\u3002\u8bf7\u6c42\u5305\u62ec\u63cf\u8ff0\u3001\u751f\u6210\u56fe\u50cf\u7684\u6570\u91cf\u548c\u6240\u9700\u56fe\u50cf\u7684\u5c3a\u5bf8\uff0c\u5e76\u4ece\u4e2d\u83b7\u53d6\u751f\u6210\u56fe\u50cf\u7684ID\u3002\u63a5\u7740\uff0c\u6211\u4eec\u53ef\u4ee5\u4ee5\u8fd9\u4e2aid\u4f5c\u4e3a\u53c2\u6570\u8c03\u7528<code>getGeneratedImageStatus<\/code>\u65b9\u6cd5\uff0c\u901a\u8fc7\u751f\u6210\u56fe\u50cf\u7684ID\u5411Azure OpenAI\u670d\u52a1\u8bf7\u6c42\u56fe\u50cf\u72b6\u6001\u3002\u4e00\u65e6\u56fe\u50cf\u751f\u6210\u72b6\u6001\u4e3a&#8221;succeeded&#8221;\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u83b7\u53d6\u5230\u56fe\u50cf\u751f\u6210\u4fe1\u606fURL\u4e86\uff0c\u8be6\u89c1\u4ee3\u7801<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FHydraLab%2Fblob%2Fmain%2Fcenter%2Fsrc%2Ftest%2Fjava%2Fcom%2Fmicrosoft%2Fhydralab%2Fcenter%2Fopenai%2FAzureOpenAIServiceClientTest.java\" target=\"_blank\" title=\"https:\/\/github.com\/microsoft\/HydraLab\/blob\/main\/center\/src\/test\/java\/com\/microsoft\/hydralab\/center\/openai\/AzureOpenAIServiceClientTest.java\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">AzureOpenAIServiceClientTest.java<\/a>\u3002<\/p>\n<h2 data-id=\"heading-3\">\u540e\u7eed<\/h2>\n<p>\u4e00\u65e6\u5c06\u5b8c\u6210\u5728Java\u4e00\u7aef\u7684\u63a5\u5165\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5c06\u5176\u96c6\u6210\u5230\u5404\u9879\u548c\u804a\u5929\u3001\u6587\u6863\u751f\u6210\u3001\u6570\u636e\u63a8\u7406\u5206\u6790\u7b49\u7b49\u76f8\u5173\u7684\u5e94\u7528\u529f\u80fd\u5f53\u4e2d\u3002\u5982\u679c\u4f60\u611f\u5174\u8da3\uff0c\u53ef\u4ee5<strong>\u6301\u7eed\u5173\u6ce8 <a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FHydraLab\" target=\"_blank\" title=\"https:\/\/github.com\/microsoft\/HydraLab\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">\u5fae\u8f6fHydraLab<\/a> \u9879\u76ee<\/strong>\uff0c\u6211\u4eec\u5c06\u5728\u5176\u4e2d\u6301\u7eed\u63a2\u7d22\u5927\u8bed\u8a00\u6a21\u578b\u8d4b\u80fd\u667a\u80fd\u5316\u6d4b\u8bd5\u7684\u5982\u4e0b\u65b9\u5411\uff1a<\/p>\n<ul>\n<li>\u667a\u80fd\u65e5\u5fd7\u548c\u7ed3\u679c\u5206\u6790\u89e3\u8bfb\u3002<\/li>\n<li>\u667a\u80fd\u63a2\u7d22\u578b\u6d4b\u8bd5\u3002<\/li>\n<li>\u6d4b\u8bd5\u7528\u4f8b\u751f\u6210\u548c\u4f18\u5316\u3002<\/li>\n<li>\u57fa\u4e8e\u6d4b\u8bd5\u7ed3\u679c\u7684\u8bca\u65ad\u5efa\u8bae\u3002<\/li>\n<li>&#8230;<\/li>\n<\/ul>\n<p>\u5e76\u5728\u4ee3\u7801\u5e93\u4e2d\u9010\u6b65\u5206\u4eab\u4e00\u4e9b\u76f8\u5173\u573a\u666fprompt\u3001\u5411\u91cf\u6a21\u578b\u548c\u53ef\u590d\u7528\u4ee3\u7801\u3002\u5982\u679c\u7533\u8bf7Azure OpenAI Service\u9047\u5230\u95ee\u9898\uff0c\u53ef\u4ee5\u79c1\u4fe1\u6211\u8054\u7cfb\u3002<\/p>","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u5206\u4eab\u5728Java\u548cPython\u73af\u5883\u4e0b\uff0c\u901a\u8fc7Azure OpenAI\uff08\u4e0d\u9650\u5236\u56fd\u5185\u8bbf\u95ee\uff09\u4f7f\u7528GPT\\DALLE\u5927\u6a21\u578b\uff0c\u5e0c\u671b\u5e2e\u52a9\u5927\u5bb6\u63a8\u52a8\u9879\u76ee\u521b\u65b0\u548c\u63d0\u6548\u3002<\/p>\n","protected":false},"author":1,"featured_media":2756,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"Java\u73a9\u8f6cAzure OpenAI\uff1aGPT\u8d4b\u80fd\u5f00\u53d1\u4e0e\u521b\u4f5c - \u5948\u65af\u79d1\u6280\u793e\u533a","rank_math_description":"\u9762\u5bf9\u4e2d\u56fd\u8bbf\u95eeOpenAI\u9650\u5236\uff0c\u672c\u6587\u4ecb\u7ecd\u5982\u4f55\u5728Java\u73af\u5883\u4e0b\u901a\u8fc7Azure OpenAI\u4f7f\u7528GPT\u6a21\u578b\uff0c\u52a9\u529b\u5f00\u53d1\u8005\u548c\u4f01\u4e1a\u63d0\u5347\u6548\u7387\uff0c\u63a8\u52a8\u9879\u76ee\u521b\u65b0\u3002\u6559\u7a0b\u5305\u542b\u5f00\u901aAzure\u670d\u52a1\u3001\u521b\u5efa\u6a21\u578b\u3001\u4ee3\u7801\u793a\u4f8b\u548c\u540e\u7eed\u5e94\u7528\u65b9\u5411\u7b49\u5185\u5bb9\uff0c\u52a9\u60a8\u8f7b\u677e\u73a9\u8f6cAI\uff01","rank_math_focus_keyword":"Azure OpenAI, GPT, Java\u5f00\u53d1, AI\u8d4b\u80fd, ChatGPT","views":"44","footnotes":""},"categories":[3],"tags":[126,127,128,129,136],"collection":[],"class_list":["post-1236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fenlei2","tag-gpt","tag-ai","tag-128","tag-129","tag-136"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts\/1236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/comments?post=1236"}],"version-history":[{"count":0,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts\/1236\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media\/2756"}],"wp:attachment":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media?parent=1236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/categories?post=1236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/tags?post=1236"},{"taxonomy":"collection","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/collection?post=1236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}