{"id":1918,"date":"2024-06-01T19:37:02","date_gmt":"2024-06-01T19:37:02","guid":{"rendered":"https:\/\/www.nicekj.com\/?p=1918"},"modified":"2024-06-01T19:37:02","modified_gmt":"2024-06-01T19:37:02","slug":"aimoxingwuin-context-learningshangxiawenxuexi","status":"publish","type":"post","link":"https:\/\/www.nicekj.com\/aimoxingwuin-context-learningshangxiawenxuexi.html","title":{"rendered":"AI\u6a21\u578b\uff08\u4e94\uff09In-context learning\u4e0a\u4e0b\u6587\u5b66\u4e60"},"content":{"rendered":"<h1 data-id=\"heading-0\">\u4e0a\u4e0b\u6587\u5b66\u4e60In-context learning<\/h1>\n<ol>\n<li>\u5e94\u7528\u5927\u8bed\u8a00\u6a21\u578b\u8981\u4ece\u4f20\u7edf\u673a\u5668\u5b66\u4e60\u601d\u7ef4\u5207\u6362\u4e3a\u4e0a\u4e0b\u6587\u5b66\u4e60\u7684\u601d\u8def<\/li>\n<li>\u4e0a\u4e0b\u6587\u5b66\u4e60\u5305\u62ecZero-shot learning \u548c Few-shot Learning \u4e24\u8005\u5e76\u65e0\u660e\u663e\u754c\u9650\uff0c\u53ef\u4ee5\u6839\u636e\u5b9e\u9645\u9700\u8981\u7075\u6d3b\u8fd0\u7528<\/li>\n<\/ol>\n<ul>\n<li>Zero-shot learning \u53ea\u662f\u63cf\u8ff0\u95ee\u9898\uff0c\u4e0d\u662f\u4f20\u7edf\u7684\u673a\u5668\u5b66\u4e60\u5582\u5927\u91cf\u7684\u6570\u636e<\/li>\n<li>Few-shot learning \u53ea\u662f\u7ed9\u51fa\u7b80\u77ed\u7684\u51e0\u4e2a\u793a\u4f8b\uff0c\u8ba9\u5927\u8bed\u8a00\u6a21\u578b\u6309\u7167\u4f8b\u5b50\u51fa<\/li>\n<\/ul>\n<h1 data-id=\"heading-1\">Zero-shot learning<\/h1>\n<ul>\n<li>\u610f\u56fe\u8bc6\u522b<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> openai<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">recognize_intent<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">input<\/span><\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    response = openai.ChatCompletion.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">        engine=deployment, <span class=\"hljs-comment\"># engine = \"deployment_name\".<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">        temperature = <span class=\"hljs-number\">0<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">        messages=[<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">              Recognize the intent from the user's input and format output as JSON string. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">            The output JSON string includes: \"intention\", \"paramters\" \"\"\"},<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-built_in\">input<\/span>}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">        ]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">      )<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">    <span class=\"hljs-keyword\">return<\/span> response.choices[<span class=\"hljs-number\">0<\/span>].message.content<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-built_in\">print<\/span>(recognize_intent(<span class=\"hljs-string\">\"\u8ba28\u670819\u65e5\u5317\u4eac\u5230\u4e0a\u6d77\u7684\u98de\u673a\"<\/span>))<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">{<span class=\"hljs-string\">\"intention\"<\/span>: <span class=\"hljs-string\">\"book_flight\"<\/span>, <span class=\"hljs-string\">\"parameters\"<\/span>: {<span class=\"hljs-string\">\"date\"<\/span>: <span class=\"hljs-string\">\"8\u670819\u65e5\"<\/span>, <span class=\"hljs-string\">\"departure\"<\/span>: <span class=\"hljs-string\">\"\u5317\u4eac\"<\/span>, <span class=\"hljs-string\">\"destination\"<\/span>: <span class=\"hljs-string\">\"\u4e0a\u6d77\"<\/span>}}<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u60c5\u611f\u5206\u7c7b<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> openai<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">classify_sentiment<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">input<\/span><\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    response = openai.ChatCompletion.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">        engine=deployment, <span class=\"hljs-comment\"># engine = \"deployment_name\".<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">        messages=[<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">             \u6839\u636e\u7ed9\u5b9a\u6587\u5b57\u6240\u8868\u8fbe\u7684\u60c5\u611f\uff0c\u5c06\u6587\u5b57\u5206\u4e3a\u4e09\u7c7b\uff1a\u6b63\u9762 ,\u4e2d\u7acb\uff0c \u8d1f\u9762\u3002\u8bf7\u5c06\u7528\u6237\u7ed9\u5b9a\u7684\u6587\u5b57\u8fdb\u884c\u5206\u7c7b\uff0c\u5e76\u8f93\u51fa\u5206\u7c7b\u3002<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">             \"\"\"},   <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-built_in\">input<\/span>}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">        ],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">        temperature = <span class=\"hljs-number\">0.9<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">        max_tokens = <span class=\"hljs-number\">200<\/span><\/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> response.choices[<span class=\"hljs-number\">0<\/span>].message.content<\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-2\">Few-shot Learning<\/h1>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> openai<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">book_flight<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">input<\/span><\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    response = openai.ChatCompletion.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">        engine=deployment, <span class=\"hljs-comment\"># engine = \"deployment_name\".<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">        temperature = <span class=\"hljs-number\">0<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">        messages=[<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">              \u901a\u8fc7\u7528\u6237\u63cf\u8ff0\uff0c\u63d0\u53d6\u822a\u73ed\u9884\u8ba2\u4fe1\u606f\u5e76\u4ee5JSON\u683c\u5f0f\u8f93\u51fa. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">              \u4ee5\u4e0b\u662f\u4e00\u4e9b\u793a\u4f8b\uff1a<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">              \u793a\u4f8b1<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">              \u8f93\u5165: \"\u8ba28\u67089\u65e5\u4e0a\u6d77\u5230\u5317\u4eac\u7684\u822a\u73ed\uff0c\u4e0a\u5348\u51fa\u53d1\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">              \u8f93\u51fa:\"{\"date\":\"0809\",\"dispatch_time\":\"6-12\",\"from\":\"shanghai\",\"to\":\"beijing\"}\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">              <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">              \u793a\u4f8b2<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">              \u8f93\u5165: \"\u8ba28\u67089\u65e5\u4e0a\u6d77\u5230\u5317\u4eac\u7684\u822a\u73ed\uff0c\u4e0b\u5348\u51fa\u53d1\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">              \u8f93\u51fa:\"{\"date\":\"0809\",\"dispatch_time\":\"12-18\",\"from\":\"shanghai\",\"to\":\"beijing\"}\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">              <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">              \u793a\u4f8b3<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">              \u8f93\u5165: \"\u8ba28\u67089\u65e5\u4e0a\u6d77\u5230\u5317\u4eac\u7684\u822a\u73ed\uff0c\u665a\u4e0a\u51fa\u53d1\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">              \u8f93\u51fa:\"{\"date\":\"0809\",\"dispatch_time\":\"18-24\",\"from\":\"shanghai\",\"to\":\"beijing\"}\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">              <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">              \u793a\u4f8b4<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\">              \u8f93\u5165: \"\u8ba28\u67089\u65e5\u4e0a\u6d77\u5230\u5317\u4eac\u7684\u822a\u73ed\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">              \u8f93\u51fa:\"{\"date\":\"0809\",\"dispatch_time\":\"unknown\",\"from\":\"shanghai\",\"to\":\"beijing\"}\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\">              \"\"\"},<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-built_in\">input<\/span>}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\">        ]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\">      )<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\">    <span class=\"hljs-keyword\">return<\/span> response.choices[<span class=\"hljs-number\">0<\/span>].message.content<\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-3\">ReAct Agent<\/h1>\n<ul>\n<li>\u5b66\u4f1aai\u601d\u8003\u7684\u8fc7\u7a0b\uff0c\u63d0\u95ee\u53ef\u4ee5\u9075\u5faa\u8fd9\u6837\u7684\u63d0<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> openai<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">tool = <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">1 tool: python_interpreter, description: use it to execute python code<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">2 tool: web_access, description: use it to get realtime info, input is the question or query <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">\"\"\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">react_prompt = <span class=\"hljs-string\">f\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">Try your best to anwser user's question, and use the following format:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">Question: the input question you must answer<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">Thought: you should always think about what to do<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">Action: the action to take, should use one of tools in the given tool list:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">[<span class=\"hljs-subst\">{tool}<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">Action Input: the input to the action<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">Here, you should pause the process and return to wait the outside observation. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">Observation: the result of the action<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><span class=\"hljs-meta\">... <\/span>(this Thought\/Action\/Action Input\/Observation can repeat N times)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\">Thought: I now know the final answer<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\">Final Answer: the final answer to the original input question<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\">\"\"\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">react_demo<\/span>(<span class=\"hljs-params\">request<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"31\">    response = openai.ChatCompletion.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"32\">        engine=deployment, <span class=\"hljs-comment\"># engine = \"deployment_name\".<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"33\">        temperature = <span class=\"hljs-number\">0<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"34\">        messages=[<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"35\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: react_prompt,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"36\">            },<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"37\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: request}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"38\">        ]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"39\">      )<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"40\">    <span class=\"hljs-built_in\">print<\/span>(response.choices[<span class=\"hljs-number\">0<\/span>].message.content)<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-built_in\">print<\/span>(react_demo(<span class=\"hljs-string\">\"\u4eca\u5929\u5317\u4eac\u9002\u5408\u7a7f\u4ec0\u4e48\uff1f\"<\/span>))<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># run the web_access tool to get the Beijing's weather today. For example, <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">weather = <span class=\"hljs-string\">\"The weather today in Beijing is 33\u00b0C, with 0% precipitation, 31% humidity, and a wind speed of 4 mph.\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">next_prompt = <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">Question: \u4eca\u5929\u5317\u4eac\u9002\u5408\u7a7f\u4ec0\u4e48\uff1f<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">Thought: I need to check the current weather in Beijing to give a proper clothing suggestion.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">Action: web_access<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">Action Input: \u4eca\u5929\u5317\u4eac\u5929\u6c14\u5982\u4f55\uff1f<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">Observation: \"\"\" + weather<\/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-built_in\">print<\/span>(react_demo(next_prompt))<\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-4\">\u6587\u672c\u5411\u91cf\u5316embedding<\/h1>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.embeddings.openai <span class=\"hljs-keyword\">import<\/span> OpenAIEmbeddings<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-comment\"># embedding = OpenAIEmbeddings() #\u5982\u679c\u76f4\u63a5\u4f7f\u7528OpenAI\u7684GPT\u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">embedding = OpenAIEmbeddings(deployment=embedding_deployment) <span class=\"hljs-comment\">#deployment\u662f\u4f60\u5728Azure\u4e2d\u7684 embedding \u6a21\u578b\u7684\u90e8\u7f72\u540d\u5b57<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">sentence1 = <span class=\"hljs-string\">\"\u6211\u662f\u4e00\u540d\u8f6f\u4ef6\u5de5\u7a0b\u5e08\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">sentence2 = <span class=\"hljs-string\">\"\u5c0f\u5f20\u4ece\u4e8b\u6cd5\u5f8b\u5de5\u4f5c\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">sentence3 = <span class=\"hljs-string\">\"\u6211\u662f\u4e00\u540d\u7a0b\u5e8f\u5458\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">embedding1 = embedding.embed_query(sentence1)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">embedding2 = embedding.embed_query(sentence2)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">embedding3 = embedding.embed_query(sentence3)<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u7528\u70b9\u96c6\u8861\u91cf\u5411\u91cf\u4e4b\u95f4\u7684\u8ddd\u79bb<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> numpy <span class=\"hljs-keyword\">as<\/span> np<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">print<\/span>(np.dot(embedding1,embedding2))<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-built_in\">print<\/span>(np.dot(embedding2,embedding3))<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><span class=\"hljs-built_in\">print<\/span>(np.dot(embedding1,embedding3))<\/span>\n<\/code><\/pre>\n<p>0.7987662070931474<br \/>\n0.7992461569419606<br \/>\n0.9592105615669977<\/p>\n<h1 data-id=\"heading-5\">\u5904\u7406\u5927\u6587\u672c<\/h1>\n<h3 data-id=\"heading-6\">\u601d\u8def<\/h3>\n<ul>\n<li>\n<ol>\n<li>\u628a\u6587\u7ae0\u5207\u5272\u90e8\u5206\uff0c\u5206\u522b\u5411\u91cf\u5316<\/li>\n<\/ol>\n<\/li>\n<li>\n<ol start=\"2\">\n<li>\u5728\u7528\u7528\u6237\u7ed9\u5b9a\u7684\u5173\u952e\u8bcd\uff0c\u7528 numpy \u7684\u70b9\u96c6 dot\uff0c\u67e5\u627e\u8ba1\u7b97\u5173\u952e\u8bcd\u76f8\u4f3c\u7684\u6bb5\u843d<\/li>\n<\/ol>\n<\/li>\n<li>\n<ol start=\"3\">\n<li>\u518d\u628a\u6bb5\u843d\u4ea4\u7ed9gpt\uff0c\u603b\u7ed3\u51fa\u901a\u987a\u7684\u8bdd<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<h3 data-id=\"heading-7\">\u505a\u6cd5<\/h3>\n<ul>\n<li>\u5411\u91cf\u5316<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.embeddings.openai <span class=\"hljs-keyword\">import<\/span> OpenAIEmbeddings<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">embed<\/span>(<span class=\"hljs-params\">chunks<\/span>): <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    <span class=\"hljs-comment\"># embedding = OpenAIEmbeddings()#\u5982\u679c\u76f4\u63a5\u4f7f\u7528OpenAI\u7684GPT\u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    embedding = OpenAIEmbeddings(deployment=embedding_deployment)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    <span class=\"hljs-keyword\">return<\/span> [embedding.embed_query(chunk) <span class=\"hljs-keyword\">for<\/span> chunk <span class=\"hljs-keyword\">in<\/span> chunks]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">        <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">        <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">chunks = split_file_into_chunks(<span class=\"hljs-string\">\"spotmax_intro.txt\"<\/span>,<span class=\"hljs-number\">100<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">embeddeds = embed(chunks)<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u5411\u91cf\u68c0\u7d22<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">find_k_largest_indices<\/span>(<span class=\"hljs-params\">input_list, k<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">    sorted_indices = <span class=\"hljs-built_in\">sorted<\/span>(<span class=\"hljs-built_in\">range<\/span>(<span class=\"hljs-built_in\">len<\/span>(input_list)), key=<span class=\"hljs-keyword\">lambda<\/span> i: input_list[i], reverse=<span class=\"hljs-literal\">True<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    <span class=\"hljs-built_in\">print<\/span>(input_list)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    <span class=\"hljs-built_in\">print<\/span>(sorted_indices)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    <span class=\"hljs-keyword\">return<\/span> sorted_indices[:k]<\/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-keyword\">def<\/span> <span class=\"hljs-title function_\">search<\/span>(<span class=\"hljs-params\">chunks,embeddeds,top_k, txt<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    embedding = OpenAIEmbeddings(deployment=<span class=\"hljs-string\">\"embedding\"<\/span>,chunk_size=<span class=\"hljs-number\">1<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    embedded_txt = embedding.embed_query(txt)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">    distances = [np.dot(embedded_txt,embedded) <span class=\"hljs-keyword\">for<\/span> embedded <span class=\"hljs-keyword\">in<\/span> embeddeds]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">    ret_idx = find_k_largest_indices(distances, top_k)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">    <span class=\"hljs-keyword\">return<\/span> [chunks[i] <span class=\"hljs-keyword\">for<\/span> i <span class=\"hljs-keyword\">in<\/span> ret_idx]<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u4f7f\u7528<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">search(chunks,embeddeds,<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-string\">\"\u63d0\u9ad8\u7cfb\u7edf\u53ef\u7528\u6027\"<\/span>)<\/span>\n<\/code><\/pre>\n<ul>\n<li>gpt\u603b\u7ed3<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> openai<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">import<\/span> numpy <span class=\"hljs-keyword\">as<\/span> np<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">anwser_question_with_doc<\/span>(<span class=\"hljs-params\">question, chunks, embeddeds<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    relevent_chunks = search(chunks,embeddeds,<span class=\"hljs-number\">2<\/span>, question)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    prompt = <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    \u4ec5\u901a\u8fc7\u603b\u7ed3\u4ee5\u4e0b\u7684\u6587\u5b57\u7247\u6bb5\u56de\u7b54\u7528\u6237\u95ee\u9898, \u6ce8\u610f\u4fdd\u6301\u56de\u7b54\u7684\u8bed\u8a00\u901a\u987a\uff08\u5b57\u6570\u572830\u5b57\u4ee5\u5185\uff09<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">    --- <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    \"\"\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    <span class=\"hljs-keyword\">for<\/span> rchunks <span class=\"hljs-keyword\">in<\/span> relevent_chunks:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">        prompt = prompt + <span class=\"hljs-string\">\"\\n'\"<\/span> + rchunks + <span class=\"hljs-string\">\"'\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">    <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">    response = openai.ChatCompletion.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">    engine=deployment, <span class=\"hljs-comment\"># engine = \"deployment_name\".<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">    messages=[<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: prompt},   <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">            {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: question}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">        ],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">        temperature = <span class=\"hljs-number\">0.9<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">        max_tokens = <span class=\"hljs-number\">200<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">   )<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">    <span class=\"hljs-keyword\">return<\/span> response.choices[<span class=\"hljs-number\">0<\/span>].message.content<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u6700\u7ec8\u4f7f\u7528<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-built_in\">print<\/span>(anwser_question_with_doc(<span class=\"hljs-string\">\"\u5982\u4f55\u63d0\u9ad8\u53ef\u7528\u6027\"<\/span>, chunks,embeddeds))<\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-8\">\u7528 LangChain \u8fde\u63a5\u5185\u90e8\u6570\u636e\u548c\u5927\u6a21\u578b<\/h1>\n<h2 data-id=\"heading-9\">\u5411\u91cf\u6570\u636e\u5e93 Chroma<\/h2>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">!pip install chromadb<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u52a0\u8f7d\u6587\u6863 \uff08Document Loader\uff09<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.document_loaders <span class=\"hljs-keyword\">import<\/span> DirectoryLoader<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">loader = DirectoryLoader(<span class=\"hljs-string\">'.\/'<\/span>, glob=<span class=\"hljs-string\">\"spotmax_intro.txt\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">docs = loader.load()<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">pip install pypdf<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.document_loaders <span class=\"hljs-keyword\">import<\/span> PyPDFLoader<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">loader = PyPDFLoader(<span class=\"hljs-string\">\"Spotmax_intro_cn_2020.pdf\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">docs = loader.load()<\/span>\n<\/code><\/pre>\n<ul>\n<li>\u5207\u5272\u6587\u6863\n<ol>\n<li>\u8fd9\u4e2a\u6587\u672c\u5206\u5272\u5668\u662f\u901a\u7528\u6587\u672c\u7684\u63a8\u8350\u5206\u5272\u5668\u3002\u5b83\u7531\u4e00\u4e2a\u5b57\u7b26\u5217\u8868\u53c2\u6570\u5316\u3002\u5b83\u4f1a\u6309\u987a\u5e8f\u5c1d\u8bd5\u5728\u8fd9\u4e9b\u5b57\u7b26\u4e0a\u8fdb\u884c\u5206\u5272\uff0c\u76f4\u5230\u5206\u5757\u8db3\u591f\u5c0f\u3002\u9ed8\u8ba4\u5217\u8868\u662f[&#8220;\\n\\n&#8221;, &#8220;\\n&#8221;, &#8221; &#8220;, \u201c&#8221;]\u3002\u8fd9\u6837\u505a\u7684\u6548\u679c\u662f\u5c3d\u53ef\u80fd\u5730\u4fdd\u6301\u6240\u6709\u6bb5\u843d\uff08\u7136\u540e\u662f\u53e5\u5b50\uff0c\u7136\u540e\u662f\u5355\u8bcd\uff09\u5728\u4e00\u8d77\u3002<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.text_splitter <span class=\"hljs-keyword\">import<\/span> RecursiveCharacterTextSplitter<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">text_splitter = RecursiveCharacterTextSplitter(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    chunk_size = <span class=\"hljs-number\">200<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    chunk_overlap = <span class=\"hljs-number\">10<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">)<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">splits = text_splitter.split_documents(docs)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">persist_directory = <span class=\"hljs-string\">'data\/'<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">!rm -rf .\/data <\/span>\n<\/code><\/pre>\n<ul>\n<li>\u5c06\u6570\u636e\u5b58\u5165\u5411\u91cf\u6570\u636e\u5e93<\/li>\n<\/ul>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.embeddings.openai <span class=\"hljs-keyword\">import<\/span> OpenAIEmbeddings<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">from<\/span> langchain.vectorstores <span class=\"hljs-keyword\">import<\/span> Chroma<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-comment\"># embedding = OpenAIEmbeddings() #\u5982\u4f55\u76f4\u63a5\u8c03\u7528OpenAI\u7684 GPT \u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">embedding = OpenAIEmbeddings(deployment=embedding_deployment) <span class=\"hljs-comment\">#\u901a\u8fc7Azure\u7684OpenAI GPT\u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">vectordb = Chroma.from_documents(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    documents=splits,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">    collection_name=<span class=\"hljs-string\">\"spotmax\"<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    embedding=embedding,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    persist_directory=persist_directory<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">vectordb.persist()<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\"><span class=\"hljs-built_in\">print<\/span>(vectordb._collection.count())<\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">docs = vectordb.similarity_search(<span class=\"hljs-string\">\"\u5982\u4f55\u63d0\u9ad8\u53ef\u7528\u6027\"<\/span>,k=<span class=\"hljs-number\">2<\/span>)<\/span>\n<\/code><\/pre>\n<h2 data-id=\"heading-10\">\u5229\u7528\u5411\u91cf\u6570\u636e\u5e93\u8fdb\u884cQA<\/h2>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.chains <span class=\"hljs-keyword\">import<\/span> RetrievalQA<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">from<\/span> langchain.chat_models <span class=\"hljs-keyword\">import<\/span> AzureChatOpenAI<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-comment\"># from langchain.chat_models import ChatOpenAI #\u76f4\u63a5\u8bbf\u95eeOpenAI\u7684GPT\u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-comment\">#llm = ChatOpenAI(model_name=\"gpt-4\", temperature=0) #\u76f4\u63a5\u8bbf\u95eeOpenAI\u7684GPT\u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">llm = AzureChatOpenAI(deployment_name = deployment, model_name=model, temperature=<span class=\"hljs-number\">0.7<\/span>, max_tokens=<span class=\"hljs-number\">1000<\/span>) <span class=\"hljs-comment\">#\u901a\u8fc7Azure\u7684OpenAI\u670d\u52a1<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">retriever=vectordb.as_retriever(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    search_type=<span class=\"hljs-string\">\"mmr\"<\/span>, search_kwargs={<span class=\"hljs-string\">\"k\"<\/span>: <span class=\"hljs-number\">3<\/span>}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    <span class=\"hljs-comment\">#search_type=\"similarity\", search_kwargs={\"k\": 3}<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">qa = RetrievalQA.from_chain_type(llm=llm, chain_type=<span class=\"hljs-string\">\"refine\"<\/span>, retriever=retriever,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">                                 return_source_documents=<span class=\"hljs-literal\">False<\/span>, verbose=<span class=\"hljs-literal\">True<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">result = qa({<span class=\"hljs-string\">\"query\"<\/span>: <span class=\"hljs-string\">\"\u4ec0\u4e48\u662fSpotMax?\"<\/span>})<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">print<\/span>(result[<span class=\"hljs-string\">\"result\"<\/span>])<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-11\">\u4ece\u6587\u672c\u5230\u56fe\u7247<\/h1>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">import<\/span> os<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">import<\/span> http.client<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">import<\/span> requests<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><span class=\"hljs-keyword\">import<\/span> time<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">create_image<\/span>(<span class=\"hljs-params\">prompt<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">  api_base = os.getenv(<span class=\"hljs-string\">\"OPENAI_API_BASE\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">  api_key = os.getenv(<span class=\"hljs-string\">\"OPENAI_API_KEY\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">  api_version = api_version = <span class=\"hljs-string\">'2022-08-03-preview'<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">  url = <span class=\"hljs-string\">\"{}dalle\/text-to-image?api-version={}\"<\/span>.<span class=\"hljs-built_in\">format<\/span>(api_base, api_version)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">  headers= { <span class=\"hljs-string\">\"api-key\"<\/span>: api_key, <span class=\"hljs-string\">\"Content-Type\"<\/span>: <span class=\"hljs-string\">\"application\/json\"<\/span> }<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">  body = {<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">      <span class=\"hljs-string\">\"caption\"<\/span>: prompt,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">      <span class=\"hljs-string\">\"resolution\"<\/span>: <span class=\"hljs-string\">\"512x512\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">  }<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">  submission = requests.post(url, headers=headers, json=body)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">  operation_location = submission.headers[<span class=\"hljs-string\">'Operation-Location'<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">  retry_after = submission.headers[<span class=\"hljs-string\">'Retry-after'<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">  status = <span class=\"hljs-string\">\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">  <span class=\"hljs-keyword\">while<\/span> (status != <span class=\"hljs-string\">\"Succeeded\"<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">      time.sleep(<span class=\"hljs-built_in\">int<\/span>(retry_after))<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\">      response = requests.get(operation_location, headers=headers)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">      status = response.json()[<span class=\"hljs-string\">'status'<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\">  image_url = response.json()[<span class=\"hljs-string\">'result'<\/span>][<span class=\"hljs-string\">'contentUrl'<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\">  <span class=\"hljs-comment\">#display(Image(url=image_url))<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\">  <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">\"\\n![image](\"<\/span>+image_url+<span class=\"hljs-string\">\")\"<\/span><\/span>\n<\/code><\/pre>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-built_in\">print<\/span> (create_image(<span class=\"hljs-string\">\"A dog on the street.\"<\/span>))<\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-12\">\u6784\u5efa\u591a\u6a21\u6001Chatbot,\u5305\u62ec\u6709\u8bb0\u5fc6\u7684Agent<\/h1>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0a\u4e0b\u6587\u5b66\u4e60In-context learning \u5e94\u7528\u5927\u8bed\u8a00\u6a21\u578b\u8981\u4ece\u4f20\u7edf\u673a\u5668\u5b66\u4e60\u601d\u7ef4\u5207\u6362\u4e3a\u4e0a\u4e0b\u6587\u5b66\u4e60\u7684\u601d\u8def \u4e0a\u4e0b\u6587\u5b66\u4e60\u5305\u62ecZero-shot learning \u548c Few-shot Learning <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"","rank_math_description":"","rank_math_focus_keyword":"","views":"3","footnotes":""},"categories":[3],"tags":[126,127,128,129,136],"collection":[],"class_list":["post-1918","post","type-post","status-publish","format-standard","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\/1918","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=1918"}],"version-history":[{"count":0,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts\/1918\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media?parent=1918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/categories?post=1918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/tags?post=1918"},{"taxonomy":"collection","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/collection?post=1918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}