{"id":1187,"date":"2024-04-24T19:32:42","date_gmt":"2024-04-24T19:32:42","guid":{"rendered":"https:\/\/www.nicekj.com\/?p=1187"},"modified":"2024-04-24T19:34:29","modified_gmt":"2024-04-24T19:34:29","slug":"jinghuabijiwuendaxlangchainjiyulangchaindedayuyanmoxingyingyongkaifashang","status":"publish","type":"post","link":"https:\/\/www.nicekj.com\/jinghuabijiwuendaxlangchainjiyulangchaindedayuyanmoxingyingyongkaifashang.html","title":{"rendered":"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)"},"content":{"rendered":"<p>\u7ee7\u300a\u9762\u5411\u5f00\u53d1\u8005\u7684ChatGPT\u63d0\u793a\u5de5\u7a0b\u300b\u4e00\u8bfe\u7206\u706b\u4e4b\u540e\uff0c\u65f6\u9694\u4e00\u4e2a\u6708\uff0c\u5434\u6069\u8fbe\u6559\u6388\u518d\u6b21\u63a8\u51fa\u4e86\u53e6\u5916\u4e09\u95e8\u514d\u8d39\u7684AI\u8bfe\u7a0b\uff0c\u4eca\u5929\u8981\u8bb2\u7684\u5c31\u662f\u5176\u4e2d\u8054\u5408\u4e86 LangChain \u4e00\u8d77\u6388\u8bfe\u7684\u2014\u2014\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b\u3002<\/p>\n<p>\u8fd9\u95e8\u8bfe\u7a0b\u5c06\u7cfb\u7edf\u5730\u4ecb\u7ecd LangChain \u7684\u5e38\u89c1\u7ec4\u4ef6\u53ca\u5176\u5e94\u7528\uff0c\u5305\u62ec\uff1a<\/p>\n<ul>\n<li>\u6a21\u578b\uff0c\u63d0\u793a\u548c\u8f93\u51fa\u89e3\u6790\uff08\u7b2c1\u7ae0\u8282\uff09<\/li>\n<li>\u8bb0\u5fc6\uff08\u7b2c2\u7ae0\u8282\uff09<\/li>\n<li>\u94fe\uff08\u7b2c3\u7ae0\u8282\uff09<\/li>\n<li>\u57fa\u4e8e\u6587\u6863\u7684\u95ee\u7b54\uff08\u7b2c4\u7ae0\u8282\uff09<\/li>\n<li>\u8bc4\u4f30\uff08\u7b2c5\u7ae0\u8282\uff09<\/li>\n<li>\u4ee3\u7406\uff08\u7b2c6\u7ae0\u8282\uff09<\/li>\n<\/ul>\n<p>\u672c\u7bc7\u4e3a\u4e0a\u7bc7\uff0c\u4e3b\u8981\u6db5\u76d6\u7b2c1~3\u7ae0\u8282\u3002<\/p>\n<p>\u4f5c\u4e3a\u4e00\u7bc7\u56fe\u6587\u7b14\u8bb0\uff0c\u672c\u6587\u64b0\u5199\u7684\u4e3b\u8981\u76ee\u7684\u662f<strong>\u5bf9\u8be5\u8bfe\u7a0b\u5185\u5bb9\u7684\u7cbe\u534e\u90e8\u5206\u8fdb\u884c\u63d0\u70bc\u548c\u7ec4\u7ec7\uff0c\u65b9\u4fbf\u8bfb\u8005\u8fdb\u884c\u56de\u987e\u4e0e\u603b\u7ed3<\/strong>\u3002<\/p>\n<p>\u2014\u2014\u6bd5\u7adf\uff0c\u56fe\u6587\u9605\u8bfb\u7684\u6548\u7387\u603b\u662f\u8981\u6bd4\u89c2\u770b\u89c6\u9891\u9ad8\u5f97\u591a\u7684\u3002<\/p>\n<p>\uff08\u672c\u8bfe\u7a0b\u7684\u5728\u7ebf\u89c2\u770b\u94fe\u63a5\u4ee5\u53ca\u53ef\u8fd0\u884c\u4ee3\u7801\u5730\u5740\u5747\u5728\u6587\u672b\uff0c\u53ef\u81ea\u53d6\u3002)<\/p>\n<h1 data-id=\"heading-0\">\u4ecb\u7ecd<\/h1>\n<h3 data-id=\"heading-1\">LangChain\u662f\u4ec0\u4e48\uff1f<\/h3>\n<p>\u4e00\u4e2a\u5f00\u6e90\u7684\u3001\u7528\u4e8e\u6784\u5efaLLM\u5e94\u7528\u7684\u5f00\u53d1\u6846\u67b6\u3002<\/p>\n<h3 data-id=\"heading-2\">LangChain\u505a\u4e86\u4ec0\u4e48\u5de5\u4f5c\uff1f<\/h3>\n<p>\u867d\u7136\u901a\u8fc7\u63d0\u793a\uff08Prompt\uff09\uff0c\u53ef\u4ee5\u52a0\u901f\u5f00\u53d1LLM\u5e94\u7528\u7684\u8fdb\u7a0b\uff0c\u4f46\u8fc7\u7a0b\u4e2d\u53ef\u80fd\u4f1a\u4ea7\u751f\u5f88\u591a\u80f6\u6c34\u4ee3\u7801\u3002<\/p>\n<p>LangChain\u6240\u505a\u7684\uff0c\u5c31\u662f<strong>\u628a\u5176\u4e2d\u4e00\u4e9b\u516c\u5171\u7684\u90e8\u5206\u62bd\u8c61\u51fa\u6765<\/strong>\u3002<\/p>\n<h3 data-id=\"heading-3\">LangChain\u6709\u4ec0\u4e48\u7279\u70b9\uff1f<\/h3>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/17b652cca16fcf020be54c333c846801.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p><strong>LangChain\u6ce8\u91cd\u7ec4\u5408\u548c\u6a21\u5757\u5316<\/strong>\u3002<\/p>\n<p>LangChain\u62e5\u6709\u8bb8\u591a\u72ec\u7acb\u7ec4\u4ef6\uff0c\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\uff0c\u4e5f\u53ef\u4ee5\u4e0e\u5176\u4ed6\u7ec4\u4ef6\u7ec4\u5408\u4f7f\u7528\u3002<\/p>\n<p>\u901a\u8fc7\u5c06\u6a21\u5757\u5316\u7684\u7ec4\u4ef6\u94fe\u5f0f\u7ec4\u5408\uff0c\u53ef\u4ee5\u6784\u5efa\u4e00\u4e2a\u66f4\u5b8c\u6574\u7684\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<h1 data-id=\"heading-4\">\u6a21\u578b\u3001\u63d0\u793a\u4e0e\u8f93\u51fa\u89e3\u6790<\/h1>\n<p>\u5148\u7406\u6e05\u51e0\u4e2a\u6982\u5ff5\uff1a<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th>\u6982\u5ff5<\/th><th>\u89e3\u91ca<\/th><\/tr><\/thead><tbody><tr><td>\u6a21\u578b<\/td><td>\u8bed\u8a00\u6a21\u578b\uff0c\u7528\u4e8e\u751f\u6210\u6587\u672c\u3002<\/td><\/tr><tr><td>\u63d0\u793a<\/td><td>\u7528\u4e8e\u5411\u6a21\u578b\u4f20\u9012\u4fe1\u606f\u3002<\/td><\/tr><tr><td>\u89e3\u6790\u5668<\/td><td>\u63a5\u6536\u6a21\u578b\u7684\u8f93\u51fa\uff0c\u5e76\u5c06\u5176\u89e3\u6790\u6210\u66f4\u7ed3\u6784\u5316\u7684\u683c\u5f0f\u3002<\/td><\/tr><\/tbody><\/table>\n<p>LangChain\u63d0\u4f9b\u4e86\u4e00\u5957\u7b80\u5355\u7684\u62bd\u8c61\uff0c\u7528\u4e8e\u7b80\u5316\u539f\u5148\u9700\u8981\u5bf9\u6a21\u578b\u53cd\u590d\u63d0\u793a\u4e0e\u89e3\u6790\u7684\u64cd\u4f5c\u3002<\/p>\n<h2 data-id=\"heading-5\">\u76f4\u63a5\u8c03\u7528API vs \u4f7f\u7528LangChain<\/h2>\n<p>\u4f7f\u7528LangChain\u8bbf\u95eeChatGPT\uff0c\u4e0e\u76f4\u63a5\u4f7f\u7528OpenAI API\u6709\u4ec0\u4e48\u533a\u522b\uff1f\u8ba9\u6211\u4eec\u7528\u4e00\u4e2a\u4f8b\u5b50\u6765\u5bf9\u6bd4\u4e00\u4e0b\u3002<\/p>\n<p>\u4efb\u52a1\u662f\u5c06\u6587\u672c\u6309\u6307\u5b9a\u98ce\u683c\u7ffb\u8bd1\u6210\u76ee\u6807\u8bed\u8a00\u3002<\/p>\n<h3 data-id=\"heading-6\">\u76f4\u63a5\u8c03\u7528API<\/h3>\n<h4 data-id=\"heading-7\">\u6b65\u9aa41\uff1a\u5b9a\u4e49\u8f85\u52a9\u51fd\u6570\uff0c\u7528\u4e8e\u8c03\u7528OpenAI API<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">def get_completion(prompt, <span class=\"hljs-attr\">model<\/span>=<span class=\"hljs-string\">\"gpt-3.5-turbo\"<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">    <span class=\"hljs-attr\">messages<\/span> = [{<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: prompt}]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    <span class=\"hljs-attr\">response<\/span> = openai.ChatCompletion.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">        <span class=\"hljs-attr\">model<\/span>=model,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">        <span class=\"hljs-attr\">messages<\/span>=messages,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">        <span class=\"hljs-attr\">temperature<\/span>=<span class=\"hljs-number\">0<\/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\">    return response.choices<span class=\"hljs-section\">[0]<\/span>.message<span class=\"hljs-section\">[\"content\"]<\/span><\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-8\">\u6b65\u9aa42\uff1a\u5b9a\u4e49\u5f85\u7ffb\u8bd1\u6587\u672c\u4e0e\u7ffb\u8bd1\u98ce\u683c<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u6587\u672c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">customer_email<\/span> = <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">Arrr, I be fuming that me blender lid <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">flew off and splattered me kitchen walls <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">with smoothie! And to make matters worse,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">the warranty don't cover the cost of <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">cleaning up me kitchen. I need yer help <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">right now, matey!<\/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>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><span class=\"hljs-comment\"># \u98ce\u683c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\"><span class=\"hljs-attr\">style<\/span> = <span class=\"hljs-string\">\"\"\"American English <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">in a calm and respectful tone<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">\"\"\"<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-9\">\u6b65\u9aa43\uff1a\u5b9a\u4e49\u63d0\u793a\uff0c\u7528\u4e8e\u6307\u5b9a\u76ee\u6807\u8bed\u8a00\uff0c\u5e76\u4ee5\u5b57\u7b26\u4e32\u63d2\u503c\u7684\u5f62\u5f0f\u63d2\u5165\u6587\u672c\u4e0e\u98ce\u683c<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">prompt<\/span> = f<span class=\"hljs-string\">\"\"\"Translate the text <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">that is delimited by triple backticks <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">into a style that is {style}.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">text: ```{customer_email}```<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">\"\"\"<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-10\">\u6b65\u9aa44\uff1a\u8c03\u7528\u51fd\u6570\u5e76\u6253\u5370\u7ed3\u679c<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">response = <span class=\"hljs-built_in\">get_completion<\/span>(prompt)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">print<\/span>(response)<\/span>\n<\/code><\/pre>\n<h3 data-id=\"heading-11\">\u4f7f\u7528LangChain<\/h3>\n<h4 data-id=\"heading-12\">\u6b65\u9aa41\uff1a\u521b\u5efaChatOpenAI\u5b9e\u4f8b<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u5bfc\u5165ChatOpenAI\uff0c\u8fd9\u662fLangChain\u5bf9ChatGPT API\u8bbf\u95ee\u7684\u62bd\u8c61<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">from langchain.chat_models import ChatOpenAI<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-comment\"># \u8981\u63a7\u5236 LLM \u751f\u6210\u6587\u672c\u7684\u968f\u673a\u6027\u548c\u521b\u9020\u6027\uff0c\u8bf7\u4f7f\u7528 temperature = 0.0<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><span class=\"hljs-attr\">chat<\/span> = ChatOpenAI(temperature=<span class=\"hljs-number\">0.0<\/span>)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-13\">\u6b65\u9aa42\uff1a\u521b\u5efa\u63d0\u793a\u6a21\u677f\u5b9e\u4f8b<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u6a21\u677f\u5b57\u7b26\u4e32\uff0c\u7528\u4e8e\u6307\u5b9a\u76ee\u6807\u8bed\u8a00\uff0c\u62e5\u6709\u4e24\u4e2a\u8f93\u5165\u53d8\u91cf\uff0c\"style\"\u548c\"text\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">template_string<\/span> = <span class=\"hljs-string\">\"\"\"Translate the text <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">that is delimited by triple backticks <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">into a style that is {style}. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">text: ```{text}```<\/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-comment\"># \u6784\u5efa\u4e00\u4e2aChatPromptTemplate\u5b9e\u4f8b\uff0c\u7528\u4e8e\u6a21\u677f\u7684\u91cd\u7528<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">from langchain.prompts import ChatPromptTemplate<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><span class=\"hljs-attr\">prompt_template<\/span> = ChatPromptTemplate.from_template(template_string)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-14\">\u6b65\u9aa43\uff1a\u5b9a\u4e49\u7ffb\u8bd1\u98ce\u683c\u4e0e\u5f85\u7ffb\u8bd1\u6587\u672c\uff0c\u4f5c\u4e3a\u8f93\u5165\u53d8\u91cf\u4f20\u5165\u63d0\u793a\u6a21\u677f<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u98ce\u683c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">customer_style<\/span> = <span class=\"hljs-string\">\"\"\"American English <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">in a calm and respectful tone<\/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>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><span class=\"hljs-comment\"># \u6587\u672c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-attr\">customer_email<\/span> = <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">Arrr, I be fuming that me blender lid <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">flew off and splattered me kitchen walls <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">with smoothie! And to make matters worse, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">the warranty don't cover the cost of <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">cleaning up me kitchen. I need yer help <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">right now, matey!<\/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>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\"><span class=\"hljs-comment\"># \u5c06\u98ce\u683c\u548c\u6587\u672c\u4f5c\u4e3a\u8f93\u5165\u53d8\u91cf\u4f20\u5165\u63d0\u793a\u6a21\u677f<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><span class=\"hljs-attr\">customer_messages<\/span> = prompt_template.format_messages(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">                    <span class=\"hljs-attr\">style<\/span>=customer_style,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">                    <span class=\"hljs-attr\">text<\/span>=customer_email)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-15\">\u6b65\u9aa44\uff1a\u8c03\u7528LLM\u7ffb\u8bd1\u6210\u6307\u5b9a\u98ce\u683c\uff0c\u5e76\u6253\u5370\u7ed3\u679c<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">customer_response = <span class=\"hljs-built_in\">chat<\/span>(customer_messages)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">print<\/span>(customer_response.content)<\/span>\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u770b\u51fa\uff0c\u4f7f\u7528LangChain\u8bbf\u95eeChatGPT\uff0c\u4e0e\u76f4\u63a5\u4f7f\u7528OpenAI API\u76f8\u6bd4\uff0c\u4e3b\u8981\u533a\u522b\u662f\uff1a<\/p>\n<ul>\n<li>\u5bf9ChatGPT API\u7684\u8bbf\u95ee\u505a\u4e86\u62bd\u8c61\uff0c\u7b80\u5316\u8c03\u7528<\/li>\n<li>\u6539\u7528\u63d0\u793a\u6a21\u677f\uff0c\u800c\u4e0d\u662f&#8221;f&#8221;\u5b57\u7b26\u4e32\uff0c\u65b9\u4fbf\u91cd\u7528<\/li>\n<\/ul>\n<h3 data-id=\"heading-16\">\u4e3a\u4ec0\u4e48\u8981\u4f7f\u7528\u63d0\u793a\u6a21\u677f\uff1f<\/h3>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/5ffe3f67495c31110a7452dfdf722e29.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p>\u6784\u5efa\u590d\u6742\u7684\u5e94\u7528\u7a0b\u5e8f\u65f6\uff0c\u63d0\u793a\u53ef\u80fd\u4f1a\u76f8\u5f53\u5197\u957f\u4e14\u8be6\u7ec6\u3002<\/p>\n<p><strong>\u63d0\u793a\u6a21\u677f\u4f5c\u4e3a\u4e00\u79cd\u62bd\u8c61\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u9002\u65f6\u91cd\u7528\u63d0\u793a<\/strong>\u3002<\/p>\n<p>\u6b64\u5916\uff0cLangChain\u8fd8\u4e3a\u4e00\u4e9b\u5e38\u89c1\u64cd\u4f5c\u63d0\u4f9b\u4e86\u63d0\u793a\uff0c\u5982\u6458\u8981\u3001\u56de\u7b54\u95ee\u9898\u3001\u8fde\u63a5\u5230SQL\u6570\u636e\u5e93\u6216\u8fde\u63a5\u5230\u4e0d\u540c\u7684API\u3002<\/p>\n<p>\u901a\u8fc7\u4f7f\u7528LangChain\u7684\u5185\u7f6e\u63d0\u793a\uff0c\u53ef\u4ee5\u5feb\u901f\u5730\u4f7f\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\uff0c\u800c\u65e0\u9700\u8bbe\u8ba1\u81ea\u5df1\u7684\u63d0\u793a\u3002<\/p>\n<h2 data-id=\"heading-17\">LangChain\u8f93\u51fa\u89e3\u6790\u5668\u7684\u4f5c\u7528<\/h2>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/47e172948f62acb31c187374f1f394b3.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p><strong>\u8f93\u51fa\u89e3\u6790\u5668\u53ef\u4ee5\u63d0\u53d6\u6a21\u578b\u8f93\u51fa\u4e2d\u7684\u7279\u5b9a\u5b57\u6bb5\uff0c\u89e3\u6790\u4e3a\u66f4\u6613\u4e8e\u5904\u7406\u7684\u683c\u5f0f<\/strong>\u3002<\/p>\n<p>\u6bd4\u5982\uff0c\u89e3\u6790\u4e3a Python \u5b57\u5178\uff1a<\/p>\n<h4 data-id=\"heading-18\">\u6b65\u9aa41\uff1a\u6307\u5b9a\u8fd4\u56de\u7684JSON\u7684\u683c\u5f0f\u89c4\u8303<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">from langchain.output_parsers import ResponseSchema<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">from langchain.output_parsers import StructuredOutputParser<\/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-comment\"># \u793c\u7269\u89c4\u8303<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-attr\">gift_schema<\/span> = ResponseSchema(name=<span class=\"hljs-string\">\"gift\"<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">                             <span class=\"hljs-attr\">description<\/span>=<span class=\"hljs-string\">\"Was the item purchased<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">                             as a gift for someone else? <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">                             Answer True if yes,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">                             False if not or unknown.\")<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><span class=\"hljs-comment\"># \u9001\u8d27\u65e5\u671f\u89c4\u8303<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><span class=\"hljs-attr\">delivery_days_schema<\/span> = ResponseSchema(name=<span class=\"hljs-string\">\"delivery_days\"<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">                                      <span class=\"hljs-attr\">description<\/span>=<span class=\"hljs-string\">\"How many days<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">                                      did it take for the product<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">                                      to arrive? If this <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">                                      information is not found,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">                                      output -1.\")<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><span class=\"hljs-comment\"># \u4ef7\u683c\u503c\u89c4\u8303<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\"><span class=\"hljs-attr\">price_value_schema<\/span> = ResponseSchema(name=<span class=\"hljs-string\">\"price_value\"<\/span>,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">                                    <span class=\"hljs-attr\">description<\/span>=<span class=\"hljs-string\">\"Extract any<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">                                    sentences about the value or <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">                                    price, and output them as a <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">                                    comma separated Python list.\")<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-19\">\u6b65\u9aa42\uff1a\u521b\u5efa\u89e3\u6790\u5668\u5b9e\u4f8b\uff0c\u83b7\u53d6\u683c\u5f0f\u6307\u4ee4<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u5c06\u683c\u5f0f\u89c4\u8303\u653e\u5230\u4e00\u4e2a\u5217\u8868\u91cc<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">response_schemas<\/span> = [gift_schema, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">                    delivery_days_schema,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">                    price_value_schema]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-comment\"># \u6784\u5efa\u4e00\u4e2aStructuredOutputParser\u5b9e\u4f8b<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><span class=\"hljs-attr\">output_parser<\/span> = StructuredOutputParser.from_response_schemas(response_schemas)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-comment\"># \u83b7\u53d6\u5c06\u53d1\u9001\u7ed9LLM\u7684\u683c\u5f0f\u6307\u4ee4<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><span class=\"hljs-attr\">format_instructions<\/span> = output_parser.get_format_instructions()<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">print(format_instructions)<\/span>\n<\/code><\/pre>\n<p>\u683c\u5f0f\u6307\u4ee4\u7528\u4e8e\u8ba9LLM\u751f\u6210\u6307\u5b9a\u7684\u5185\u5bb9\u683c\u5f0f\uff0c\u4ee5\u4fbf\u89e3\u6790\u5668\u53ef\u4ee5\u89e3\u6790\uff0c\u6253\u5370\u5f97\u5230\u5176\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">c<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-c code-block-extension-codeShowNum\" lang=\"c\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">The output should be a markdown code snippet formatted in the following schema, including the leading and trailing <span class=\"hljs-string\">\"```json\"<\/span> and <span class=\"hljs-string\">\"```\"<\/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\">```json<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">{<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">\t<span class=\"hljs-string\">\"gift\"<\/span>: <span class=\"hljs-built_in\">string<\/span>  <span class=\"hljs-comment\">\/\/ Was the item purchased as a gift for someone else? Answer True if yes, False if not or unknown.<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">\t<span class=\"hljs-string\">\"delivery_days\"<\/span>: <span class=\"hljs-built_in\">string<\/span>  <span class=\"hljs-comment\">\/\/ How many days did it take for the product to arrive? If this information is not found,                                      output -1.<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">\t<span class=\"hljs-string\">\"price_value\"<\/span>: <span class=\"hljs-built_in\">string<\/span>  <span class=\"hljs-comment\">\/\/ Extract any sentences about the value or price, and output them as a comma separated Python list.<\/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\">```<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-20\">\u6b65\u9aa43\uff1a\u521b\u5efa\u63d0\u793a\u6a21\u677f\u5b9e\u4f8b\uff0c\u5c06\u6587\u672c\u548c\u683c\u5f0f\u6307\u4ee4\u4f5c\u4e3a\u8f93\u5165\u53d8\u91cf\u4f20\u5165<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u63d0\u793a<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">review_template_2<\/span> = <span class=\"hljs-string\">\"\"\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">For the following text, extract the following information:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">gift: Was the item purchased as a gift for someone else? <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">Answer True if yes, False if not or unknown.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">delivery_days: How many days did it take for the product<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">to arrive? If this information is not found, output -1.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">price_value: Extract any sentences about the value or price,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">and output them as a comma separated Python list.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">text: {text}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">{format_instructions}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">\"\"\"<\/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 class=\"hljs-comment\"># \u6784\u5efa\u4e00\u4e2aChatPromptTemplate\u5b9e\u4f8b\uff0c\u7528\u4e8e\u6a21\u677f\u7684\u91cd\u7528<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\"><span class=\"hljs-attr\">prompt<\/span> = ChatPromptTemplate.from_template(template=review_template_2)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><span class=\"hljs-comment\"># \u5c06\u6587\u672c\u548c\u683c\u5f0f\u6307\u4ee4\u4f5c\u4e3a\u8f93\u5165\u53d8\u91cf\u4f20\u5165<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\"><span class=\"hljs-attr\">messages<\/span> = prompt.format_messages(text=customer_review, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\">                                <span class=\"hljs-attr\">format_instructions<\/span>=format_instructions)<\/span>\n<\/code><\/pre>\n<h3 data-id=\"heading-21\">\u6b65\u9aa44\uff1a\u8c03\u7528LLM\u89e3\u6790\u6587\u672c\uff0c\u5e76\u6253\u5370\u7ed3\u679c<\/h3>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">response = <span class=\"hljs-built_in\">chat<\/span>(messages)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">print<\/span>(response.content)<\/span>\n<\/code><\/pre>\n<p>\u6253\u5370\u7ed3\u679c\u5982\u4e0b\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\">```json<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-punctuation\">{<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">\t<span class=\"hljs-attr\">\"gift\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-literal\"><span class=\"hljs-keyword\">true<\/span><\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">\t<span class=\"hljs-attr\">\"delivery_days\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"2\"<\/span><span class=\"hljs-punctuation\">,<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">\t<span class=\"hljs-attr\">\"price_value\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-string\">\"It's slightly more expensive than the other leaf blowers out there, but I think it's worth it for the extra features.\"<\/span><span class=\"hljs-punctuation\">]<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><span class=\"hljs-punctuation\">}<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">```<\/span>\n<\/code><\/pre>\n<h3 data-id=\"heading-22\">\u6b65\u9aa45\uff1a\u5c06\u7ed3\u679c\u89e3\u6790\u4e3a\u5b57\u5178\u7c7b\u578b\uff0c\u5e76\u63d0\u53d6\u4e0e\u9001\u8d27\u5929\u6570\u76f8\u5173\u8054\u7684\u503c<\/h3>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">output_dict = output_parser<span class=\"hljs-selector-class\">.parse<\/span>(response.content)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">print<\/span>(output_dict.get('delivery_days'))<\/span>\n<\/code><\/pre>\n<p>\u63d0\u53d6\u5230\u7684\u503c\u5982\u4e0b\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">arduino<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-arduino code-block-extension-codeShowNum\" lang=\"arduino\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-string\">'2'<\/span><\/span>\n<\/code><\/pre>\n<h1 data-id=\"heading-23\">\u8bb0\u5fc6(Memory)<\/h1>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/facf998b1aa68aabfc85f235cc5a15a2.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p>\u5f53\u6211\u4eec\u4e0e\u6a21\u578b\u4e92\u52a8\u65f6\uff0c\u7531\u4e8e\u6a21\u578b\u672c\u8eab\u662f\u65e0\u72b6\u6001\u7684\uff0c\u56e0\u6b64\u5b83\u901a\u5e38\u65e0\u6cd5\u8bb0\u4f4f\u4e4b\u524d\u5bf9\u8bdd\u7684\u5386\u53f2\u6d88\u606f\u3002<\/p>\n<p>\u6bcf\u4e2a\u8bf7\u6c42\u4ea4\u4e92\uff0c\u6bcf\u6b21\u8c03\u7528API\u90fd\u662f\u72ec\u7acb\u7684\uff0c\u8fd9\u5bf9\u4e8e\u6784\u5efa\u6d41\u7545\u7684\u5bf9\u8bdd\u5e94\u7528\u662f\u4e2a\u95ee\u9898\u3002<\/p>\n<p>\u4e3a\u6b64\uff0cLangChain\u63d0\u4f9b\u4e86\u591a\u79cd\u8bb0\u5fc6\u5b58\u50a8\u7ba1\u7406\u7b56\u7565\u3002<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/2775f1a0fde1540fa711551e1d0cd3be.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th>\u7b56\u7565<\/th><th>\u7279\u70b9<\/th><\/tr><\/thead><tbody><tr><td>ConversationBufferMemory<\/td><td>\u5b58\u50a8\u5b8c\u6574\u7684\u5bf9\u8bdd\u5386\u53f2<\/td><\/tr><tr><td>ConversationBufferWindowMemory<\/td><td>\u53ea\u4fdd\u7559\u6700\u540e\u51e0\u8f6e\u5bf9\u8bdd<\/td><\/tr><tr><td>ConversationalTokenBufferMemory<\/td><td>\u9650\u5236\u5b58\u50a8\u7684\u4ee4\u724c\u6570\u91cf<\/td><\/tr><tr><td>ConversationSummaryBufferMemory<\/td><td>\u4f7f\u7528\u6458\u8981\u5b58\u50a8\u5bf9\u8bdd\u5386\u53f2<\/td><\/tr><\/tbody><\/table>\n<h2 data-id=\"heading-24\">ConversationBufferMemory<\/h2>\n<p>ConversationBufferMemory\u53ef\u7528\u4e8e\u4e34\u65f6\u5b58\u50a8\u5b8c\u6574\u7684\u5bf9\u8bdd\u5386\u53f2\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<h4 data-id=\"heading-25\">\u6b65\u9aa41\uff1a\u521b\u5efa\u5bf9\u8bdd\u94fe\u5b9e\u4f8b<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">from langchain.chat_models import ChatOpenAI<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">from langchain.chains import ConversationChain<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">from langchain.memory import ConversationBufferMemory<\/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-attr\">llm<\/span> = ChatOpenAI(temperature=<span class=\"hljs-number\">0.0<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><span class=\"hljs-attr\">memory<\/span> = ConversationBufferMemory()<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-attr\">conversation<\/span> = ConversationChain(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    <span class=\"hljs-attr\">llm<\/span>=llm, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    <span class=\"hljs-attr\">memory<\/span> = memory,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">    <span class=\"hljs-attr\">verbose<\/span>=<span class=\"hljs-literal\">True<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-26\">\u6b65\u9aa42\uff1a\u4f7f\u7528&#8221;conversation.predict&#8221;\u51fd\u6570\u8fdb\u884c\u5bf9\u8bdd<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">conversation.predict(<span class=\"hljs-attr\">input<\/span>=<span class=\"hljs-string\">\"Hi, my name is Andrew\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">conversation.predict(<span class=\"hljs-attr\">input<\/span>=<span class=\"hljs-string\">\"What is 1+1?\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">conversation.predict(<span class=\"hljs-attr\">input<\/span>=<span class=\"hljs-string\">\"What is my name?\"<\/span>)<\/span>\n<\/code><\/pre>\n<p>\u4e5f\u53ef\u4f7f\u7528&#8221;memory.save_context&#8221;\u76f4\u63a5\u5f80\u5b58\u50a8\u91cc\u6dfb\u52a0\u65b0\u5185\u5bb9<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">css<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-css code-block-extension-codeShowNum\" lang=\"css\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"Not much, just hanging\"<\/span>}, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">                    {\"output\": <span class=\"hljs-string\">\"Cool\"<\/span>})<\/span>\n<\/code><\/pre>\n<p>\u7531\u4e8e\u6211\u4eec\u628a&#8221;verbose&#8221;\u53d8\u91cf\u6539\u6210&#8221;True\uff0c\u56e0\u6b64\u53ef\u4ee5\u770b\u5230LangChain\u8fd0\u884c\u65f6\u7684\u66f4\u591a\u7ec6\u8282\uff1a<\/p>\n<blockquote>\n<p>&gt; Entering new ConversationChain chain&#8230;<\/p>\n<p>Prompt after formatting:<\/p>\n<p>The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.<\/p>\n<p>Current conversation:<\/p>\n<p>Human: Hi, my name is Andrew<\/p>\n<p>AI: Hello Andrew, it&#8217;s nice to meet you. My name is AI. How can I assist you today?<\/p>\n<p>Human: What is 1+1?<\/p>\n<p>AI: The answer to 1+1 is 2.<\/p>\n<p>Human: What is my name?<\/p>\n<p>AI:<\/p>\n<p>&gt; Finished chain.<\/p>\n<p>&#8216;Your name is Andrew, as you mentioned earlier.&#8217;<\/p>\n<\/blockquote>\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u8bb0\u5fc6\u5b58\u50a8\u5305\u542b\u4e86\u5230\u76ee\u524d\u4e3a\u6b62\u7684\u6240\u6709\u5bf9\u8bdd\u6d88\u606f\uff0c\u5e76\u7528\u4f5cLLM\u7684\u8f93\u5165\u6216\u989d\u5916\u4e0a\u4e0b\u6587\u3002<\/p>\n<p>\u8fd9\u6837\uff0c\u5b83\u5728\u751f\u6210\u8f93\u51fa\u65f6\uff0c\u5c31\u53ef\u4ee5\u57fa\u4e8e\u4e4b\u524d\u6240\u8bf4\u8fc7\u7684\u4f1a\u8bdd\u5185\u5bb9\uff0c\u518d\u751f\u6210\u65b0\u7684\u4f1a\u8bdd\uff0c\u8ba9\u4f60\u611f\u89c9\u5b83\u597d\u50cf\u201c\u8bb0\u5f97\u201d\u4f60\u8bf4\u8fc7\u7684\u8bdd\u3002<\/p>\n<h4 data-id=\"heading-27\">\u6b65\u9aa43\uff1a\u6253\u5370\u5f53\u524d\u5bf9\u8bdd\u5b58\u50a8\u7684\u6240\u6709\u5386\u53f2\u6d88\u606f<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-built_in\">print<\/span>(memory.buffer)<\/span>\n<\/code><\/pre>\n<blockquote>\n<p>Human: Hi, my name is Andrew<\/p>\n<p>AI: Hello Andrew, it&#8217;s nice to meet you. My name is AI. How can I assist you today?<\/p>\n<p>Human: What is 1+1?<\/p>\n<p>AI: The answer to 1+1 is 2.<\/p>\n<p>Human: What is my name?<\/p>\n<p>AI: Your name is Andrew, as you mentioned earlier.<\/p>\n<\/blockquote>\n<p>\u6216\u8005\uff0c<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-built_in\">print<\/span>(memory.load_memory_variables({}))<\/span>\n<\/code><\/pre>\n<blockquote>\n<p>{&#8216;history&#8217;: &#8220;Human: Hi, my name is AndrewnAI: Hello Andrew, it&#8217;s nice to meet you. My name is AI. How can I assist you today?nHuman: What is 1+1?nAI: The answer to 1+1 is 2.nHuman: What is my name?nAI: Your name is Andrew, as you mentioned earlier.&#8221;}<\/p>\n<\/blockquote>\n<p>\u4f46\u968f\u7740\u5bf9\u8bdd\u7684\u8fdb\u884c\uff0c\u8bb0\u5fc6\u5b58\u50a8\u7684\u5927\u5c0f\u4f1a\u589e\u52a0\uff0c\u53d1\u9001Token\u7684\u6210\u672c\u4e5f\u4f1a\u589e\u52a0\uff0c\u4e3a\u6b64\uff0cLangChain\u63d0\u4f9b\u4e86\u53e6\u5916\u51e0\u79cd\u7b56\u7565\u3002<\/p>\n<h2 data-id=\"heading-28\">ConversationBufferWindowMemory<\/h2>\n<p>ConversationBufferWindowMemory\u53ea\u4fdd\u7559\u7a97\u53e3\u8bb0\u5fc6\uff0c\u4e5f\u5373\u53ea\u4fdd\u7559\u6700\u540e\u51e0\u8f6e\u5bf9\u8bdd\u3002\u5b83\u6709\u4e00\u4e2a\u53d8\u91cfk\uff0c\u8868\u793a\u60f3\u8bb0\u4f4f\u6700\u540e\u51e0\u8f6e\u5bf9\u8bdd\u3002<\/p>\n<p>\u6bd4\u5982\uff0c\u5f53k\u7b49\u4e8e1\u65f6\uff0c\u8868\u793a\u4ec5\u8bb0\u4f4f\u6700\u540e\u4e00\u8f6e\u5bf9\u8bdd\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">from langchain.memory import ConversationBufferWindowMemory<\/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-attr\">llm<\/span> = ChatOpenAI(temperature=<span class=\"hljs-number\">0.0<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><span class=\"hljs-attr\">memory<\/span> = ConversationBufferWindowMemory(k=<span class=\"hljs-number\">1<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-attr\">conversation<\/span> = ConversationChain(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    <span class=\"hljs-attr\">llm<\/span>=llm, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">    <span class=\"hljs-attr\">memory<\/span> = memory,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">    <span class=\"hljs-attr\">verbose<\/span>=<span class=\"hljs-literal\">False<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">)<\/span>\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u5728\u8fdb\u884c\u51e0\u8f6e\u5bf9\u8bdd\u4e4b\u540e\uff0c\u5c1d\u8bd5\u8ba9\u5176\u56de\u987e\u4e4b\u524d\u7684\u5bf9\u8bdd\u5185\u5bb9\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">conversation.predict(<span class=\"hljs-attr\">input<\/span>=<span class=\"hljs-string\">\"Hi, my name is Andrew\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-comment\"># \"Hello Andrew, it's nice to meet you. My name is AI. How can I assist you today?\"<\/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\">conversation.predict(<span class=\"hljs-attr\">input<\/span>=<span class=\"hljs-string\">\"What is 1+1?\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-comment\"># 'The answer to 1+1 is 2.'<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">conversation.predict(<span class=\"hljs-attr\">input<\/span>=<span class=\"hljs-string\">\"What is my name?\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><span class=\"hljs-comment\"># \"I'm sorry, I don't have access to that information. Could you please tell me your name?\"<\/span><\/span>\n<\/code><\/pre>\n<p>\u8fd9\u65f6\u6211\u4eec\u4f1a\u53d1\u73b0\uff0c\u7531\u4e8e\u7a97\u53e3\u8bb0\u5fc6\u7684\u9650\u5236\uff0c\u5b83\u4f1a\u4e22\u5931\u4e86\u524d\u9762\u6709\u5173\u540d\u5b57\u7684\u4ea4\u6d41\uff0c\u4ece\u800c\u65e0\u6cd5\u8bf4\u51fa\u6211\u7684\u540d\u5b57\u3002<\/p>\n<p>\u8fd9\u4e2a\u529f\u80fd\u53ef\u4ee5\u9632\u6b62\u8bb0\u5fc6\u5b58\u50a8\u91cf\u968f\u7740\u5bf9\u8bdd\u7684\u8fdb\u884c\u800c\u65e0\u9650\u589e\u957f\u3002\u5f53\u7136\u5728\u5b9e\u9645\u4f7f\u7528\u65f6\uff0ck\u4e0d\u4f1a\u8bbe\u4e3a1\uff0c\u800c\u662f\u4f1a\u901a\u5e38\u8bbe\u7f6e\u4e3a\u4e00\u4e2a\u8f83\u5927\u7684\u6570\u5b57\u3002<\/p>\n<h2 data-id=\"heading-29\">ConversationalTokenBufferMemory<\/h2>\n<p>\u5f88\u591aLLM\u5b9a\u4ef7\u662f\u57fa\u4e8eToken\u7684\uff0cToken\u8c03\u7528\u7684\u6570\u91cf\u76f4\u63a5\u53cd\u6620\u4e86LLM\u8c03\u7528\u7684\u6210\u672c\u3002<\/p>\n<p>\u4f7f\u7528ConversationalTokenBufferMemory\uff0c\u53ef\u4ee5\u9650\u5236\u4fdd\u5b58\u5728\u8bb0\u5fc6\u5b58\u50a8\u7684\u4ee4\u724c\u6570\u91cf\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">from langchain.memory import ConversationTokenBufferMemory<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">from langchain.llms import OpenAI<\/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-attr\">llm<\/span> = ChatOpenAI(temperature=<span class=\"hljs-number\">0.0<\/span>)<\/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-comment\"># \u6307\u5b9aLLM\u548cToken\u9650\u5236\u503c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-attr\">memory<\/span> = ConversationTokenBufferMemory(llm=llm, max_token_limit=<span class=\"hljs-number\">30<\/span>)<\/span>\n<\/code><\/pre>\n<p>\u5728\u63d2\u5165\u4e00\u4e9b\u6d88\u606f\u4e4b\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u6253\u5370\u5176\u5b9e\u9645\u4fdd\u5b58\u7684\u5386\u53f2\u6d88\u606f\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">css<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-css code-block-extension-codeShowNum\" lang=\"css\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"># \u63d2\u5165\u4e00\u4e9b\u6d88\u606f<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"AI is what?!\"<\/span>},<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">                    {\"output\": <span class=\"hljs-string\">\"Amazing!\"<\/span>})<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"Backpropagation is what?\"<\/span>},<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">                    {\"output\": <span class=\"hljs-string\">\"Beautiful!\"<\/span>})<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"Chatbots are what?\"<\/span>}, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">                    {\"output\": <span class=\"hljs-string\">\"Charming!\"<\/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\"># \u6253\u5370\u5386\u53f2\u6d88\u606f<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">memory<span class=\"hljs-selector-class\">.load_memory_variables<\/span>({})<\/span>\n<\/code><\/pre>\n<p>\u6253\u5370\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<blockquote>\n<p>{&#8216;history&#8217;: &#8216;AI: Beautiful!nHuman: Chatbots are what?nAI: Charming!&#8217;}<\/p>\n<\/blockquote>\n<p>\u6211\u4eec\u4f1a\u53d1\u73b0\uff0c\u5f53\u628aToken\u9650\u5236\u503c\u8c03\u5f97\u6bd4\u8f83\u9ad8\u65f6\uff0c\u5b83\u51e0\u4e4e\u53ef\u4ee5\u5305\u542b\u6574\u4e2a\u5bf9\u8bdd\u3002<\/p>\n<p><strong>\u800c\u5982\u679c\u51cf\u5c11\u503c\uff0c\u5b83\u4f1a\u5220\u6389\u5bf9\u8bdd\u6700\u65e9\u7684\u90a3\u90e8\u5206\u6d88\u606f\uff0c\u53ea\u4fdd\u7559\u6700\u8fd1\u5bf9\u8bdd\u7684\u6d88\u606f\uff0c\u5e76\u4e14\u4fdd\u8bc1\u603b\u7684\u6d88\u606f\u5185\u5bb9\u957f\u5ea6\u4e0d\u8d85\u8fc7Token\u9650\u5236\u503c<\/strong>\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u4e4b\u6240\u4ee5\u8fd8\u8981\u6307\u5b9a\u4e00\u4e2aLLM\u53c2\u6570\uff0c\u662f\u56e0\u4e3a\u4e0d\u540c\u7684LLM\u4f7f\u7528\u4e0d\u540c\u7684Token\u8ba1\u7b97\u65b9\u5f0f\u3002<\/p>\n<p>\u8fd9\u91cc\u662f\u544a\u8bc9\u5b83\uff0c\u4f7f\u7528ChatOpenAI LLM\u4f7f\u7528\u7684\u8ba1\u7b97Token\u7684\u65b9\u6cd5\u3002<\/p>\n<h2 data-id=\"heading-30\">ConversationSummaryBufferMemory<\/h2>\n<p>ConversationSummaryBufferMemory\u8bd5\u56fe\u5c06\u6d88\u606f\u7684\u663e\u6027\u8bb0\u5fc6\uff0c\u4fdd\u6301\u5728\u6211\u4eec\u8bbe\u5b9a\u7684Token\u9650\u5236\u503c\u4e4b\u4e0b\uff0c\u4e5f\u5373<\/p>\n<ol>\n<li>\u5f53Token\u9650\u5236\u503c\u80fd\u8986\u76d6\u6587\u672c\u957f\u5ea6\u65f6\uff0c\u4f1a\u5b58\u50a8\u6574\u4e2a\u5bf9\u8bdd\u5386\u53f2\u3002<\/li>\n<li>\u800c\u5f53Token\u9650\u5236\u503c\u5c0f\u4e8e\u6587\u672c\u957f\u5ea6\u65f6\uff0c\u5219\u4f1a\u4e3a\u6240\u6709\u5386\u53f2\u6d88\u606f\u751f\u6210\u6458\u8981\uff0c\u6539\u5728\u8bb0\u5fc6\u4e2d\u5b58\u50a8\u5386\u53f2\u6d88\u606f\u7684\u6458\u8981\u3002<\/li>\n<\/ol>\n<p>\u4ee5\u60c5\u51b52\u4e3a\u4f8b\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">css<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-css code-block-extension-codeShowNum\" lang=\"css\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-selector-tag\">from<\/span> langchain<span class=\"hljs-selector-class\">.memory<\/span> import ConversationSummaryBufferMemory<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"># \u521b\u5efa\u4e00\u4e2a\u957f\u5b57\u7b26\u4e32<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">schedule = \"There is <span class=\"hljs-selector-tag\">a<\/span> meeting at <span class=\"hljs-number\">8<\/span>am with your product team. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">You will need your powerpoint presentation prepared. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><span class=\"hljs-number\">9<\/span>am-<span class=\"hljs-number\">12<\/span>pm have <span class=\"hljs-selector-tag\">time<\/span> <span class=\"hljs-selector-tag\">to<\/span> work on your LangChain <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">project which will go quickly because Langchain is such <span class=\"hljs-selector-tag\">a<\/span> powerful tool. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">At Noon, lunch at the italian resturant with <span class=\"hljs-selector-tag\">a<\/span> customer who is driving <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><span class=\"hljs-selector-tag\">from<\/span> over an hour away <span class=\"hljs-selector-tag\">to<\/span> meet you <span class=\"hljs-selector-tag\">to<\/span> understand the latest in AI. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">Be sure <span class=\"hljs-selector-tag\">to<\/span> bring your laptop <span class=\"hljs-selector-tag\">to<\/span> show the latest LLM demo.\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=<span class=\"hljs-number\">100<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"Hello\"<\/span>}, {\"output\": <span class=\"hljs-string\">\"What's up\"<\/span>})<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"Not much, just hanging\"<\/span>},<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">                    {\"output\": <span class=\"hljs-string\">\"Cool\"<\/span>})<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">memory<span class=\"hljs-selector-class\">.save_context<\/span>({\"<span class=\"hljs-selector-tag\">input<\/span>\": <span class=\"hljs-string\">\"What is on the schedule today?\"<\/span>}, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">                    {\"output\": f<span class=\"hljs-string\">\"{schedule}\"<\/span>})<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">                    <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">conversation = ConversationChain(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">    llm=llm, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">    memory = memory,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">    verbose=True<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\">)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">conversation<span class=\"hljs-selector-class\">.predict<\/span>(<span class=\"hljs-selector-tag\">input<\/span>=\"What would be <span class=\"hljs-selector-tag\">a<\/span> good demo <span class=\"hljs-selector-tag\">to<\/span> show?\")<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\"><\/span>\n<\/code><\/pre>\n<p>\u8fd0\u884c\u7684\u7ec6\u8282\u5982\u4e0b\uff1a<\/p>\n<blockquote>\n<p>&gt; Entering new ConversationChain chain&#8230;<\/p>\n<p>Prompt after formatting:<\/p>\n<p>The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.<\/p>\n<p>Current conversation:<\/p>\n<p>System: The human and AI engage in small talk before discussing the day&#8217;s schedule. The AI informs the human of a morning meeting with the product team, time to work on the LangChain project, and a lunch meeting with a customer interested in the latest AI developments.<\/p>\n<p>Human: What would be a good demo to show?<\/p>\n<p>AI:<\/p>\n<p>&gt; Finished chain.<\/p>\n<p>&#8220;Based on the customer&#8217;s interest in AI developments, I would suggest showcasing our latest natural language processing capabilities. We could demonstrate how our AI can accurately understand and respond to complex language queries, and even provide personalized recommendations based on the user&#8217;s preferences. Additionally, we could highlight our AI&#8217;s ability to learn and adapt over time, making it a valuable tool for businesses looking to improve their customer experience.&#8221;<\/p>\n<\/blockquote>\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u7531\u4e8e\u8d85\u8fc7\u4e86\u8bbe\u5b9a\u7684Token\u9650\u5236\u503c\uff0c\u5b83\u4e3a\u5386\u53f2\u4f1a\u8bdd\u7684\u751f\u6210\u4e86\u4e00\u4e2a\u6458\u8981\uff0c\u5e76\u653e\u5728\u7cfb\u7edf\u6d88\u606f\u7684\u63d0\u793a\u8bcd\u4e2d\u3002<\/p>\n<h2 data-id=\"heading-31\">\u5176\u4ed6\u8bb0\u5fc6\u5b58\u50a8\u7ba1\u7406\u7b56\u7565<\/h2>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/a47c8ba2c26b573d8505b583c9f70227.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th>\u7b56\u7565<\/th><th>\u7279\u70b9<\/th><\/tr><\/thead><tbody><tr><td>\u5411\u91cf\u6570\u636e\u5b58\u50a8\uff08VectorDataMemory\uff09<\/td><td>\u5b58\u50a8\u5d4c\u5165\u5411\u91cf\uff0c\u7528\u4e8e\u68c0\u7d22\u76f8\u5173\u6587\u672c\u5757<\/td><\/tr><tr><td>\u5b9e\u4f53\u8bb0\u5fc6\u5b58\u50a8\uff08EntityMemories\uff09<\/td><td>\u8bb0\u4f4f\u7279\u5b9a\u5b9e\u4f53\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u6bd4\u5982\u5bf9\u8bdd\u4e2d\u67d0\u4e2a\u91cd\u8981\u4eba\u7269\u7684\u4fe1\u606f<\/td><\/tr><\/tbody><\/table>\n<p>\u9664\u4e86\u8fd9\u4e9b\u8bb0\u5fc6\u5b58\u50a8\u7c7b\u578b\uff0c\u4e5f\u53ef\u5c06\u6574\u4e2a\u5bf9\u8bdd\u5b58\u50a8\u5728\u4f20\u7edf\u6570\u636e\u5e93\u4e2d\uff0c\u5982\u952e\u503c\u5b58\u50a8\uff08key-value store\uff09\u6216SQL\u6570\u636e\u5e93\u3002<\/p>\n<p>\u8fd9\u6837\u5c31\u53ef\u4ee5\u56de\u987e\u6574\u4e2a\u5bf9\u8bdd\uff0c\u8fdb\u884c\u5ba1\u8ba1\u6216\u8fdb\u4e00\u6b65\u6539\u8fdb\u7cfb\u7edf\u3002<\/p>\n<h1 data-id=\"heading-32\">\u94fe<\/h1>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/ce35f26cd6294dca6d28ef2d4538af8c.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p><strong>\u94fe\uff08Chain\uff09\u662fLangChain\u4e2d\u6700\u5173\u952e\u7684\u6784\u5efa\u6a21\u5757<\/strong>\u3002<\/p>\n<p>\u9664\u4e86\u5c06 LLM \u4e0e\u63d0\u793a\u7ed3\u5408\u5728\u4e00\u8d77\uff0c\u8fd8\u53ef\u4ee5\u901a\u8fc7\u7ec4\u5408\u591a\u4e2a\u94fe\uff0c\u5bf9\u6587\u672c\u6216\u5176\u4ed6\u6570\u636e\u6267\u884c\u4e00\u7cfb\u5217\u7684\u64cd\u4f5c\u3002<\/p>\n<p>LangChain\u63d0\u4f9b\u4e86\u591a\u79cd\u53ef\u7528\u7684\u94fe\u7c7b\u578b\uff1a<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table><thead><tr><th>\u7c7b\u578b<\/th><th>\u573a\u666f<\/th><\/tr><\/thead><tbody><tr><td>LLM\u94fe\uff08LLMChain\uff09<\/td><td>\u5c06LLM\u548c\u63d0\u793a\u7ed3\u5408\u5728\u4e00\u8d77<\/td><\/tr><tr><td>\u7b80\u5355\u987a\u5e8f\u94fe\uff08SimpleSequentialChain\uff09<\/td><td>\u53ea\u9700\u8981\u4e00\u4e2a\u8f93\u5165\u5e76\u4e14\u53ea\u8fd4\u56de\u4e00\u4e2a\u8f93\u51fa<\/td><\/tr><tr><td>\u5e38\u89c4\u987a\u5e8f\u94fe\uff08SequentialChain\uff09<\/td><td>\u6709\u591a\u4e2a\u8f93\u5165\u6216\u591a\u4e2a\u8f93\u51fa<\/td><\/tr><tr><td>\u8def\u7531\u94fe\uff08RouterChain\uff09<\/td><td>\u6839\u636e\u8f93\u5165\u7684\u5177\u4f53\u5185\u5bb9\u8def\u7531\u5230\u4e0d\u540c\u7684\u5b50\u94fe<\/td><\/tr><\/tbody><\/table>\n<p>\u4e0b\u9762\u8ba9\u6211\u4eec\u6765\u9010\u4e00\u4e86\u89e3\u4e00\u4e0b\u3002<\/p>\n<p>\u9996\u5148\uff0c\u7528 pandas DataFrame \u52a0\u8f7d\u4e00\u4e9b\u7a0d\u540e\u8981\u7528\u5230\u7684\u6570\u636e\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">import pandas as pd<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">df<\/span> = pd.read_csv(<span class=\"hljs-string\">'Data.csv'<\/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\">df.head()<\/span>\n<\/code><\/pre>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/a26e55926b698c82c5b1071d019036d0.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<h2 data-id=\"heading-33\">LLM\u94fe\uff08LLMChain\uff09<\/h2>\n<p>LLM\u94fe\u662f\u4e00\u4e2a\u7b80\u5355\u4f46\u975e\u5e38\u5f3a\u5927\u7684\u94fe\uff0c\u5b83\u662f\u6211\u4eec\u540e\u9762\u8981\u8ba8\u8bba\u7684\u5176\u4ed6\u94fe\u7c7b\u578b\u7684\u57fa\u7840\uff0c\u7528\u4e8e\u5c06LLM\u548c\u63d0\u793a\u7ed3\u5408\u5728\u4e00\u8d77\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<h4 data-id=\"heading-34\">\u6b65\u9aa41\uff1a\u521d\u59cb\u5316\u8bed\u8a00\u6a21\u578b\u548c\u63d0\u793a<\/h4>\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.chat_models <span class=\"hljs-keyword\">import<\/span> ChatOpenAI<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">from<\/span> langchain.prompts <span class=\"hljs-keyword\">import<\/span> ChatPromptTemplate<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">from<\/span> langchain.chains <span class=\"hljs-keyword\">import<\/span> LLMChain<\/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\"># \u7528\u4e00\u4e2a\u6bd4\u8f83\u9ad8\u7684temperature\u503c\u4ee5\u83b7\u5f97\u4e00\u4e9b\u66f4\u6709\u610f\u601d\u7684\u7ed3\u679c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">llm = ChatOpenAI(temperature=<span class=\"hljs-number\">0.9<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-comment\"># \u63a5\u6536\u4e00\u4e2a\u540d\u4e3a\u201cproduct\u201d\u7684\u53d8\u91cf\uff0c\u8981\u6c42LLM\u751f\u6210\u63cf\u8ff0\u751f\u4ea7\u8be5\u4ea7\u54c1\u7684\u516c\u53f8\u7684\u6700\u4f73\u540d\u79f0<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">prompt = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">    <span class=\"hljs-string\">\"What is the best name to describe <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">    a company that makes {product}?\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-35\">\u6b65\u9aa42\uff1a\u5c06\u4ea7\u54c1\u4f20\u5165\u94fe\u4e2d\uff0c\u5e76\u8fd0\u884c\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">chain<\/span> = LLMChain(llm=llm, prompt=prompt)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">product<\/span> = <span class=\"hljs-string\">\"Queen Size Sheet Set\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">chain.run(product)<\/span>\n<\/code><\/pre>\n<p>\u8fd0\u884c\u94fe\u540e\uff0c\u5b83\u5c06\u5728\u540e\u53f0\u683c\u5f0f\u5316\u63d0\u793a\u8bcd\uff0c\u7136\u540e\u5c06\u683c\u5f0f\u5316\u540e\u7684\u5b8c\u6574\u63d0\u793a\u8bcd\u4f20\u9012\u7ed9LLM\uff0c\u7136\u540e\u5f97\u5230\u7ed3\u679c\uff1a<\/p>\n<blockquote>\n<p>&#8216;Royal Beddings.&#8217;<\/p>\n<\/blockquote>\n<h2 data-id=\"heading-36\">\u7b80\u5355\u987a\u5e8f\u94fe\uff08SimpleSequentialChain\uff09<\/h2>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/d4f717fa4b9d7bc1fa42e333f3f38fa2.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p>\u5f53\u6211\u4eec\u7684\u5b50\u94fe\u53ea\u9700\u8981\u4e00\u4e2a\u8f93\u5165\u5e76\u4e14\u53ea\u8fd4\u56de\u4e00\u4e2a\u8f93\u51fa\u65f6\uff0c\u7b80\u5355\u987a\u5e8f\u94fe\u5f88\u6709\u6548\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<h4 data-id=\"heading-37\">\u6b65\u9aa41\uff1a\u521d\u59cb\u5316\u8bed\u8a00\u6a21\u578b<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">from langchain.chains import SimpleSequentialChain<\/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-attr\">llm<\/span> = ChatOpenAI(temperature=<span class=\"hljs-number\">0.9<\/span>)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-38\">\u6b65\u9aa42\uff1a\u521b\u5efa\u7b2c\u4e00\u4e2a\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u63d0\u793a\u6a21\u677f1\uff1a\u63a5\u53d7\u4ea7\u54c1\u5e76\u8fd4\u56de\u63cf\u8ff0\u8be5\u516c\u53f8\u7684\u6700\u4f73\u540d\u79f0<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">first_prompt<\/span> = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    \"What is the best name to describe <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    a company that makes {product}?\"<\/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\"><span class=\"hljs-comment\"># \u7b2c\u4e00\u4e2a\u94fe<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><span class=\"hljs-attr\">chain_one<\/span> = LLMChain(llm=llm, prompt=first_prompt)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-39\">\u6b65\u9aa43\uff1a\u521b\u5efa\u7b2c\u4e8c\u4e2a\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u63d0\u793a\u6a21\u677f2\uff1a\u83b7\u53d6\u516c\u53f8\u540d\u79f0\uff0c\u7136\u540e\u8f93\u51fa\u8be5\u516c\u53f8\u7684 20 \u5b57\u63cf\u8ff0<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">second_prompt<\/span> = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    \"Write a 20 words description for the following <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    company:{company_name}\"<\/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-comment\"># \u7b2c\u4e8c\u4e2a\u94fe<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-attr\">chain_two<\/span> = LLMChain(llm=llm, prompt=second_prompt)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-40\">\u6b65\u9aa44\uff1a\u521b\u5efa\u7b80\u5355\u987a\u5e8f\u94fe\u5b9e\u4f8b\uff0c\u5e76\u8fd0\u884c\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u7b2c\u4e00\u4e2a\u94fe\u7684\u8f93\u51fa\u5c06\u4f20\u9012\u5230\u7b2c\u4e8c\u4e2a\u94fe<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">overall_simple_chain<\/span> = SimpleSequentialChain(chains=[chain_one, chain_two],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">                                             <span class=\"hljs-attr\">verbose<\/span>=<span class=\"hljs-literal\">True<\/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\">overall_simple_chain.run(product)<\/span>\n<\/code><\/pre>\n<p>\u8fd0\u884c\u7684\u7ec6\u8282\u5982\u4e0b\uff1a<\/p>\n<blockquote>\n<p>&gt; Entering new SimpleSequentialChain chain&#8230;<\/p>\n<p>&#8220;Royal Bedding Co.&#8221;<\/p>\n<p>&#8220;Royal Bedding Co. offers luxurious and comfortable bedding solutions for a restful and regal sleep experience fit for royalty.&#8221;<\/p>\n<p>&gt; Finished chain.<\/p>\n<\/blockquote>\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u5b83\u9996\u5148\u8f93\u51fa\u516c\u53f8\u540d\u79f0\uff0c\u7136\u540e\u5c06\u5176\u4f20\u9012\u5230\u7b2c\u4e8c\u6761\u94fe\uff0c\u5e76\u7ed9\u51fa\u8be5\u516c\u53f8\u53ef\u80fd\u7684\u4e1a\u52a1\u63cf\u8ff0\u3002<\/p>\n<h2 data-id=\"heading-41\">\u5e38\u89c4\u987a\u5e8f\u94fe\uff08SequentialChain\uff09<\/h2>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/a2972ca25aed2058b09e41c6ed2de823.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p>\u5f53\u6709\u591a\u4e2a\u8f93\u5165\u6216\u591a\u4e2a\u8f93\u51fa\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528\u5e38\u89c4\u987a\u5e8f\u94fe\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<h4 data-id=\"heading-42\">\u6b65\u9aa41\uff1a\u521d\u59cb\u5316\u8bed\u8a00\u6a21\u578b<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">from langchain.chains import SequentialChain<\/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-attr\">llm<\/span> = ChatOpenAI(temperature=<span class=\"hljs-number\">0.9<\/span>)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-43\">\u6b65\u9aa42\uff1a\u521b\u5efa\u4e00\u5806\u5c06\u4f9d\u6b21\u4f7f\u7528\u7684\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u7b2c\u4e00\u6761\u94fe\uff0c\u5c06\u8bc4\u8bba\u7ffb\u8bd1\u6210\u82f1\u8bed\u3002<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">first_prompt<\/span> = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    \"Translate the following review to english:\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    \"nn{Review}\"<\/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-attr\">chain_one<\/span> = LLMChain(llm=llm, prompt=first_prompt, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">                     <span class=\"hljs-attr\">output_key<\/span>=<span class=\"hljs-string\">\"English_Review\"<\/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\">           <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><span class=\"hljs-comment\"># \u7b2c\u4e8c\u6761\u94fe\uff0c\u7528\u4e00\u53e5\u8bdd\u603b\u7ed3\u8be5\u8bc4\u8bba       <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><span class=\"hljs-attr\">second_prompt<\/span> = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">    \"Can you summarize the following review in 1 sentence:\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">    \"nn{English_Review}\"<\/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-attr\">chain_two<\/span> = LLMChain(llm=llm, prompt=second_prompt, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">                     <span class=\"hljs-attr\">output_key<\/span>=<span class=\"hljs-string\">\"summary\"<\/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\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\"><span class=\"hljs-comment\"># \u7b2c\u4e09\u6761\u94fe\uff0c\u68c0\u6d4b\u539f\u59cb\u8bc4\u8bba\u7684\u8bed\u8a00<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\"><span class=\"hljs-attr\">third_prompt<\/span> = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">    \"What language is the following review:nn{Review}\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><span class=\"hljs-attr\">chain_three<\/span> = LLMChain(llm=llm, prompt=third_prompt,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">                       <span class=\"hljs-attr\">output_key<\/span>=<span class=\"hljs-string\">\"language\"<\/span><\/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>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\"><span class=\"hljs-comment\"># \u7b2c\u56db\u6761\u94fe\uff0c\u63a5\u6536\u7b2c\u4e8c\u6761\u94fe\u7684\u6458\u8981\u5185\u5bb9(\"summary\"\u53d8\u91cf)\uff0c\u4ee5\u53ca\u7b2c\u4e09\u6761\u94fe\u7684\u8bed\u8a00\u7c7b\u522b(\"language\"\u53d8\u91cf)\uff0c\u8981\u6c42\u540e\u7eed\u56de\u590d\u6458\u8981\u5185\u5bb9\u65f6\u4f7f\u7528\u6307\u5b9a\u8bed\u8a00\u3002<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\"><span class=\"hljs-attr\">fourth_prompt<\/span> = ChatPromptTemplate.from_template(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\">    \"Write a follow up response to the following \"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\">    \"summary in the specified language:\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"31\">    \"nnSummary: {summary}nnLanguage: {language}\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"32\">)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"33\"><span class=\"hljs-attr\">chain_four<\/span> = LLMChain(llm=llm, prompt=fourth_prompt,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"34\">                      <span class=\"hljs-attr\">output_key<\/span>=<span class=\"hljs-string\">\"followup_message\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"35\">                     )<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"36\"><\/span>\n<\/code><\/pre>\n<p>\u5e38\u89c4\u987a\u5e8f\u94fe\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u6b65\u9aa4\uff0c\u90fd\u53ef\u4ee5\u63a5\u6536\u6765\u81ea\u4e0a\u6e38\u7684\u591a\u4e2a\u8f93\u5165\u53d8\u91cf\uff0c\u7279\u522b\u5f53\u4f60\u6709\u590d\u6742\u7684\u4e0b\u6e38\u94fe\u9700\u8981\u548c\u591a\u4e2a\u4e0a\u6e38\u94fe\u7ec4\u5408\u65f6\uff0c\u8fd9\u4f1a\u975e\u5e38\u6709\u7528\u3002<\/p>\n<h4 data-id=\"heading-44\">\u6b65\u9aa43\uff1a\u5c06\u8fd9\u4e9b\u94fe\u7ec4\u5408\u5728\u987a\u5e8f\u94fe\u4e2d\uff0c\u5e76\u6307\u5b9a\u8f93\u5165\u4e0e\u8f93\u51fa\u53d8\u91cf<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">overall_chain<\/span> = SequentialChain(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">    <span class=\"hljs-attr\">chains<\/span>=[chain_one, chain_two, chain_three, chain_four],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    <span class=\"hljs-attr\">input_variables<\/span>=[<span class=\"hljs-string\">\"Review\"<\/span>],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    <span class=\"hljs-attr\">output_variables<\/span>=[<span class=\"hljs-string\">\"English_Review\"<\/span>, <span class=\"hljs-string\">\"summary\"<\/span>,<span class=\"hljs-string\">\"followup_message\"<\/span>],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    <span class=\"hljs-attr\">verbose<\/span>=<span class=\"hljs-literal\">True<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">)<\/span>\n<\/code><\/pre>\n<p>\u8ba9\u8fd9\u4e9b\u53d8\u91cf\u540d\u79f0\u51c6\u786e\u6392\u5217\u975e\u5e38\u91cd\u8981\uff0c\u56e0\u4e3a\u6709\u5f88\u591a\u4e0d\u540c\u7684\u8f93\u5165\u548c\u8f93\u51fa\u3002\u5982\u679c\u4f60\u9047\u5230\u4efb\u4f55\u95ee\u9898\uff0c\u8bf7\u68c0\u67e5\u5b83\u4eec\u6392\u5217\u987a\u5e8f\u662f\u5426\u6b63\u786e\u3002<\/p>\n<h4 data-id=\"heading-45\">\u6b65\u9aa44\uff1a\u9009\u62e9\u4e00\u6761\u8bc4\u8bba\u5e76\u5c06\u5176\u4f20\u9012\u5230\u6574\u4e2a\u94fe\u4e2d<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">scss<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-scss code-block-extension-codeShowNum\" lang=\"scss\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">review = df<span class=\"hljs-selector-class\">.Review<\/span><span class=\"hljs-selector-attr\">[5]<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-built_in\">overall_chain<\/span>(review)<\/span>\n<\/code><\/pre>\n<p>\u6267\u884c\u7684\u7ec6\u8282\u5982\u4e0b\uff1a<\/p>\n<blockquote>\n<p>&gt; Entering new SequentialChain chain&#8230;<\/p>\n<p>&gt; Finished chain.<\/p>\n<p>{&#8216;Review&#8217;: &#8220;Je trouve le go\u00fbt m\u00e9diocre. La mousse ne tient pas, c&#8217;est bizarre. J&#8217;ach\u00e8te les m\u00eames dans le commerce et le go\u00fbt est bien meilleur&#8230;nVieux lot ou contrefa\u00e7on !?&#8221;,<\/p>\n<p>&#8216;English_Review&#8217;: &#8220;I find the taste mediocre. The foam doesn&#8217;t hold up, it&#8217;s weird. I buy the same ones in stores and the taste is much better&#8230; Old batch or counterfeit!?&#8221;,<\/p>\n<p>&#8216;summary&#8217;: &#8216;The reviewer expresses dissatisfaction with the taste and foam of the product, suspecting that it might be an old batch or counterfeit.&#8217;,<\/p>\n<p>&#8216;followup_message&#8217;: &#8220;R\u00e9ponse : Le critique exprime sa d\u00e9ception quant au go\u00fbt et \u00e0 la mousse du produit, soup\u00e7onnant qu&#8217;il s&#8217;agit peut-\u00eatre d&#8217;un lot p\u00e9rim\u00e9 ou contrefait. Il est important que les fabricants prennent des mesures pour garantir la qualit\u00e9 de leurs produits afin de maintenir la confiance de leurs clients. Nous esp\u00e9rons que ce probl\u00e8me sera rapidement r\u00e9solu pour que les consommateurs puissent profiter du produit tel qu&#8217;il est cens\u00e9 \u00eatre.&#8221;}<\/p>\n<\/blockquote>\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u5176\u6700\u7ec8\u91c7\u7528\u4e86\u68c0\u6d4b\u5230\u7684\u539f\u59cb\u8bed\u8a00\u2014\u2014\u6cd5\u8bed\u5bf9\u6458\u8981\u5185\u5bb9\u8fdb\u884c\u4e86\u56de\u590d\u3002<\/p>\n<h2 data-id=\"heading-46\">\u8def\u7531\u94fe\uff08RouterChain\uff09<\/h2>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/149508f8dd6e266f283365dbbdcbd785.png\" alt=\"\u7cbe\u534e\u7b14\u8bb0\uff1a\u5434\u6069\u8fbe x LangChain\u300a\u57fa\u4e8eLangChain\u7684\u5927\u8bed\u8a00\u6a21\u578b\u5e94\u7528\u5f00\u53d1\u300b(\u4e0a)\" \/><\/figure>\n<\/p>\n<p>\u5982\u679c\u4f60\u6709\u591a\u4e2a\u5b50\u94fe\uff0c\u4e14\u6bcf\u4e2a\u5b50\u94fe\u4e13\u95e8\u8d1f\u8d23\u5904\u7406\u67d0\u79cd\u7279\u5b9a\u7c7b\u578b\u7684\u8f93\u5165\uff0c\u8fd9\u79cd\u60c5\u51b5\u5c31\u53ef\u4ee5\u4f7f\u7528\u8def\u7531\u94fe\u3002<\/p>\n<p><strong>\u8def\u7531\u94fe\u4f1a\u6839\u636e\u8f93\u5165\u7684\u5177\u4f53\u5185\u5bb9\u8def\u7531\u5230\u4e0d\u540c\u7684\u5b50\u94fe<\/strong>\u3002<\/p>\n<p>\u5b83\u4f1a\u9996\u5148\u5224\u65ad\u8be5\u4f7f\u7528\u54ea\u4e2a\u5b50\u94fe\uff0c\u7136\u540e\u5c06\u8f93\u5165\u4f20\u9012\u5230\u76f8\u5e94\u7684\u5b50\u94fe\u3002<\/p>\n<p>\u4f8b\u5b50\u5982\u4e0b\uff1a<\/p>\n<h4 data-id=\"heading-47\">\u6b65\u9aa41\uff1a\u63d0\u4f9b\u591a\u4e2a\u7279\u5b9a\u7c7b\u578b\u7684\u63d0\u793a\u6a21\u677f<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u7b2c\u4e00\u4e2a\u63d0\u793a\uff0c\u9002\u5408\u56de\u7b54\u7269\u7406\u95ee\u9898<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">physics_template<\/span> = <span class=\"hljs-string\">\"\"\"You are a very smart physics professor. <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">You are great at answering questions about physics in a concise<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">and easy to understand manner. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">When you don't know the answer to a question you admit<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">that you don't know.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">Here is a question:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">{input}\"\"\"<\/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-comment\"># \u7b2c\u4e8c\u4e2a\u63d0\u793a\uff0c\u9002\u5408\u56de\u7b54\u6570\u5b66\u95ee\u9898<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\"><span class=\"hljs-attr\">math_template<\/span> = <span class=\"hljs-string\">\"\"\"You are a very good mathematician. <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">You are great at answering math questions. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">You are so good because you are able to break down <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">hard problems into their component parts, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">answer the component parts, and then put them together<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">to answer the broader question.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">Here is a question:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">{input}\"\"\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\"><span class=\"hljs-comment\"># \u7b2c\u4e09\u4e2a\u63d0\u793a\uff0c\u9002\u5408\u56de\u7b54\u5386\u53f2\u95ee\u9898<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><span class=\"hljs-attr\">history_template<\/span> = <span class=\"hljs-string\">\"\"\"You are a very good historian. <\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">You have an excellent knowledge of and understanding of people,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\">events and contexts from a range of historical periods. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\">You have the ability to think, reflect, debate, discuss and <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\">evaluate the past. You have a respect for historical evidence<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\">and the ability to make use of it to support your explanations <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\">and judgements.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"31\">Here is a question:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"32\">{input}\"\"\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"33\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"34\"><span class=\"hljs-comment\"># \u7b2c\u56db\u4e2a\u63d0\u793a,\u9002\u5408\u56de\u7b54\u8ba1\u7b97\u673a\u79d1\u5b66\u95ee\u9898\u3002<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"35\"><span class=\"hljs-attr\">computerscience_template<\/span> = <span class=\"hljs-string\">\"\"\" You are a successful computer scientist.<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"36\">You have a passion for creativity, collaboration,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"37\">forward-thinking, confidence, strong problem-solving capabilities,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"38\">understanding of theories and algorithms, and excellent communication <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"39\">skills. You are great at answering coding questions. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"40\">You are so good because you know how to solve a problem by <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"41\">describing the solution in imperative steps <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"42\">that a machine can easily interpret and you know how to <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"43\">choose a solution that has a good balance between <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"44\">time complexity and space complexity. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"45\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"46\">Here is a question:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"47\">{input}\"\"\"<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-48\">\u6b65\u9aa42\uff1a\u4e3a\u6bcf\u4e2a\u63d0\u793a\u6a21\u677f\u63d0\u4f9b\u66f4\u591a\u76f8\u5173\u4fe1\u606f<\/h4>\n<p>\u8fd9\u4e9b\u4fe1\u606f\u5c06\u4f20\u9012\u7ed9\u8def\u7531\u94fe\uff0c\u4ee5\u5e2e\u52a9\u8def\u7531\u94fe\u51b3\u5b9a\u4f55\u65f6\u4f7f\u7528\u54ea\u6761\u5b50\u94fe\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">prompt_infos<\/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 class=\"hljs-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"physics\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">        <span class=\"hljs-string\">\"description\"<\/span>: <span class=\"hljs-string\">\"Good for answering questions about physics\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">        <span class=\"hljs-string\">\"prompt_template\"<\/span>: physics_template<\/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>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">        <span class=\"hljs-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"math\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">        <span class=\"hljs-string\">\"description\"<\/span>: <span class=\"hljs-string\">\"Good for answering math questions\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">        <span class=\"hljs-string\">\"prompt_template\"<\/span>: math_template<\/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-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"History\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">        <span class=\"hljs-string\">\"description\"<\/span>: <span class=\"hljs-string\">\"Good for answering history questions\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\">        <span class=\"hljs-string\">\"prompt_template\"<\/span>: history_template<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">    },<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">    {<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">        <span class=\"hljs-string\">\"name\"<\/span>: <span class=\"hljs-string\">\"computer science\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">        <span class=\"hljs-string\">\"description\"<\/span>: <span class=\"hljs-string\">\"Good for answering computer science questions\"<\/span>, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">        <span class=\"hljs-string\">\"prompt_template\"<\/span>: computerscience_template<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">    }<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">]<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-49\">\u6b65\u9aa43\uff1a\u5bfc\u5165\u9700\u8981\u7684\u94fe\u7c7b\u578b\uff0c\u5b9a\u4e49\u4f7f\u7528\u7684\u8bed\u8a00\u6a21\u578b<\/h4>\n<p>MultiPromptChain\u662f\u4e00\u79cd\u7279\u5b9a\u7c7b\u578b\u7684\u94fe\uff0c\u7528\u4e8e\u5728\u591a\u4e2a\u4e0d\u540c\u63d0\u793a\u6a21\u677f\u4e4b\u95f4\u8fdb\u884c\u8def\u7531\u3002<\/p>\n<p>LLMRouterChain\u4f1a\u501f\u52a9\u8bed\u8a00\u6a21\u578b\u7684\u5e2e\u52a9\uff0c\u8ba9\u8bed\u8a00\u6a21\u578b\u6839\u636e\u4e0a\u9762\u63d0\u4f9b\u7684\u540d\u79f0\u548c\u63cf\u8ff0\u7b49\u4fe1\u606f\uff0c\u5224\u65ad\u5982\u4f55\u8def\u7531\u3002<\/p>\n<p>RouterOutputParser\u5c06LLM\u8f93\u51fa\u89e3\u6790\u6210\u4e00\u4e2a\u5b57\u5178\uff0c\u6839\u636e\u5b57\u5178\u5185\u5bb9\u786e\u5b9a\u4e0b\u6e38\u4f7f\u7528\u54ea\u6761\u94fe\uff0c\u4ee5\u53ca\u94fe\u7684\u8f93\u5165\u5e94\u8be5\u662f\u4ec0\u4e48\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">javascript<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-javascript code-block-extension-codeShowNum\" lang=\"javascript\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-keyword\">from<\/span> langchain.<span class=\"hljs-property\">chains<\/span>.<span class=\"hljs-property\">router<\/span> <span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-title class_\">MultiPromptChain<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">from<\/span> langchain.<span class=\"hljs-property\">chains<\/span>.<span class=\"hljs-property\">router<\/span>.<span class=\"hljs-property\">llm_router<\/span> <span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-title class_\">LLMRouterChain<\/span>,<span class=\"hljs-title class_\">RouterOutputParser<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">from<\/span> langchain.<span class=\"hljs-property\">prompts<\/span> <span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-title class_\">PromptTemplate<\/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\">llm = <span class=\"hljs-title class_\">ChatOpenAI<\/span>(temperature=<span class=\"hljs-number\">0<\/span>)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-50\">\u6b65\u9aa44\uff1a\u521b\u5efa\u76ee\u6807\u94fe<\/h4>\n<p>\u8def\u7531\u94fe\u4f1a\u6839\u636e\u8f93\u5165\u5185\u5bb9\u8c03\u7528\u8fd9\u4e9b\u76ee\u6807\u94fe\u7684\u5176\u4e2d\u4e00\u4e2a\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">destination_chains<\/span> = {}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">for p_info in prompt_infos:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">    <span class=\"hljs-attr\">name<\/span> = p_info[<span class=\"hljs-string\">\"name\"<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">    <span class=\"hljs-attr\">prompt_template<\/span> = p_info[<span class=\"hljs-string\">\"prompt_template\"<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    <span class=\"hljs-attr\">prompt<\/span> = ChatPromptTemplate.from_template(template=prompt_template)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    <span class=\"hljs-attr\">chain<\/span> = LLMChain(llm=llm, prompt=prompt)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">    destination_chains<span class=\"hljs-section\">[name]<\/span> = chain  <\/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-attr\">destinations<\/span> = [f<span class=\"hljs-string\">\"{p['name']}: {p['description']}\"<\/span> for p in prompt_infos]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><span class=\"hljs-attr\">destinations_str<\/span> = <span class=\"hljs-string\">\"n\"<\/span>.join(destinations)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-51\">\u6b65\u9aa45\uff1a\u521b\u5efa\u9ed8\u8ba4\u94fe<\/h4>\n<p>\u9ed8\u8ba4\u94fe\u662f\u5728\u8def\u7531\u627e\u4e0d\u5230\u5408\u9002\u7684\u5b50\u94fe\u8c03\u7528\u65f6\uff0c\u7528\u6765\u5907\u7528\u7684\u4e00\u6761\u94fe\u8def\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">default_prompt<\/span> = ChatPromptTemplate.from_template(<span class=\"hljs-string\">\"{input}\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-attr\">default_chain<\/span> = LLMChain(llm=llm, prompt=default_prompt)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-52\">\u6b65\u9aa46\uff1a\u5b9a\u4e49\u4e00\u4e2a\u8def\u7531\u63d0\u793a\u6a21\u677f<\/h4>\n<p>LLM \u4f1a\u6839\u636e\u63d0\u793a\u8bcd\u7684\u5185\u5bb9\u5728\u4e0d\u540c\u94fe\u4e4b\u95f4\u8def\u7531\u3002<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">css<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-css code-block-extension-codeShowNum\" lang=\"css\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">MULTI_PROMPT_ROUTER_TEMPLATE = \"\"\"Given <span class=\"hljs-selector-tag\">a<\/span> raw text <span class=\"hljs-selector-tag\">input<\/span> <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-selector-tag\">a<\/span> <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">language model select the model prompt best suited for the <span class=\"hljs-selector-tag\">input<\/span>. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">You will be given the names of the available prompts and <span class=\"hljs-selector-tag\">a<\/span> <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">description of what the prompt is best suited for. <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">You may also revise the original <span class=\"hljs-selector-tag\">input<\/span> if you think that revising<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">it will ultimately lead <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-selector-tag\">a<\/span> better response <span class=\"hljs-selector-tag\">from<\/span> the language model.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">&lt;&lt; FORMATTING &gt;&gt;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">Return <span class=\"hljs-selector-tag\">a<\/span> markdown <span class=\"hljs-selector-tag\">code<\/span> snippet with <span class=\"hljs-selector-tag\">a<\/span> JSON <span class=\"hljs-selector-tag\">object<\/span> formatted <span class=\"hljs-selector-tag\">to<\/span> look like:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">```json<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\">{{{{<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">    \"destination\": string  name of the prompt to use or <span class=\"hljs-string\">\"DEFAULT\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\">    <span class=\"hljs-string\">\"next_inputs\"<\/span>: string  a potentially modified version of the original input<\/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>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\">REMEMBER: <span class=\"hljs-string\">\"destination\"<\/span> MUST be one of the candidate prompt <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">names specified below OR it can be <span class=\"hljs-string\">\"DEFAULT\"<\/span> if the input is not<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\">well suited for any of the candidate prompts.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">REMEMBER: <span class=\"hljs-string\">\"next_inputs\"<\/span> can just be the original input <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">if you don<span class=\"hljs-string\">'t think any modifications are needed.<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\">&lt;&lt; CANDIDATE PROMPTS &gt;&gt;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">{destinations}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\">&lt;&lt; INPUT &gt;&gt;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\">{{input}}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\">&lt;&lt; OUTPUT (remember to include the ```json)&gt;&gt;\"\"\"<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\"><\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-53\">\u6b65\u9aa47\uff1a\u7ec4\u5408\u8bed\u8a00\u6a21\u578b\u3001\u8def\u7531\u63d0\u793a\u6a21\u677f\uff0c\u6784\u6210\u8def\u7531\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">router_template<\/span> = MULTI_PROMPT_ROUTER_TEMPLATE.format(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">    <span class=\"hljs-attr\">destinations<\/span>=destinations_str<\/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-attr\">router_prompt<\/span> = PromptTemplate(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\">    <span class=\"hljs-attr\">template<\/span>=router_template,<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">    <span class=\"hljs-attr\">input_variables<\/span>=[<span class=\"hljs-string\">\"input\"<\/span>],<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">    <span class=\"hljs-attr\">output_parser<\/span>=RouterOutputParser(),<\/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\"><span class=\"hljs-attr\">router_chain<\/span> = LLMRouterChain.from_llm(llm, router_prompt)<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-54\">\u6b65\u9aa48\uff1a\u7ec4\u5408\u8def\u7531\u94fe\u3001\u76ee\u6807\u94fe\u548c\u9ed8\u8ba4\u94fe\uff0c\u521b\u5efa\u6574\u6761\u94fe<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">ini<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-ini code-block-extension-codeShowNum\" lang=\"ini\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-attr\">chain<\/span> = MultiPromptChain(router_chain=router_chain, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">                         <span class=\"hljs-attr\">destination_chains<\/span>=destination_chains, <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\">                         <span class=\"hljs-attr\">default_chain<\/span>=default_chain, verbose=<span class=\"hljs-literal\">True<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">                        )<\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-55\">\u6b65\u9aa49\uff1a\u63d0\u95ee\u4e0d\u540c\u7c7b\u578b\u7684\u95ee\u9898<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">bash<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-bash code-block-extension-codeShowNum\" lang=\"bash\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u7269\u7406\u95ee\u9898<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">chain.run(<span class=\"hljs-string\">\"What is black body radiation?\"<\/span>)<\/span>\n<\/code><\/pre>\n<p>\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<blockquote>\n<p>&gt; Entering new MultiPromptChain chain&#8230;<\/p>\n<p>physics: {&#8216;input&#8217;: &#8216;What is black body radiation?&#8217;}<\/p>\n<p>&gt; Finished chain.<\/p>\n<p>&#8220;Black body radiation refers to the electromagnetic radiation emitted by a perfect black body, which is an object that absorbs all radiation that falls on it and emits radiation at all wavelengths. The radiation emitted by a black body depends only on its temperature and follows a specific distribution known as Planck&#8217;s law. This type of radiation is important in understanding the behavior of stars, as well as in the development of technologies such as incandescent light bulbs and infrared cameras.&#8221;<\/p>\n<\/blockquote>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">bash<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-bash code-block-extension-codeShowNum\" lang=\"bash\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u6570\u5b66\u95ee\u9898<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">chain.run(<span class=\"hljs-string\">\"what is 2 + 2\"<\/span>)<\/span>\n<\/code><\/pre>\n<p>\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<blockquote>\n<p>&gt; Entering new MultiPromptChain chain&#8230;<\/p>\n<p>math: {&#8216;input&#8217;: &#8216;what is 2 + 2&#8217;}<\/p>\n<p>&gt; Finished chain.<\/p>\n<p>&#8216;As an AI language model, I can answer this question easily. The answer to 2 + 2 is 4.&#8217;<\/p>\n<\/blockquote>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">bash<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-bash code-block-extension-codeShowNum\" lang=\"bash\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><span class=\"hljs-comment\"># \u751f\u7269\u95ee\u9898\uff0c\u65e0\u5339\u914d\uff0c\u8d70\u9ed8\u8ba4\u94fe<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">chain.run(<span class=\"hljs-string\">\"Why does every cell in our body contain DNA?\"<\/span>)<\/span>\n<\/code><\/pre>\n<blockquote>\n<p>&gt; Entering new MultiPromptChain chain&#8230;<\/p>\n<p>None: {&#8216;input&#8217;: &#8216;Why does every cell in our body contain DNA?&#8217;}<\/p>\n<p>&gt; Finished chain.<\/p>\n<p>&#8216;Every cell in our body contains DNA because DNA carries the genetic information that determines the characteristics and functions of each cell. DNA contains the instructions for the synthesis of proteins, which are essential for the structure and function of cells. Additionally, DNA is responsible for the transmission of genetic information from one generation to the next. Therefore, every cell in our body needs DNA to carry out its specific functions and to maintain the integrity of the organism as a whole.&#8217;<\/p>\n<\/blockquote>\n<p>\u5728\u7ebf\u89c2\u770b\u94fe\u63a5\uff1a<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DgUcYC0Iuw2g\" target=\"_blank\" title=\"https:\/\/www.youtube.com\/watch?v=gUcYC0Iuw2g\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">www.youtube.com\/watch?v=gUc\u2026<\/a><\/p>\n<p>\u53ef\u8fd0\u884c\u4ee3\u7801\u5730\u5740\uff1a<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Flearn.deeplearning.ai%2Flangchain%2Flesson%2F1%2Fintroduction\" target=\"_blank\" title=\"https:\/\/learn.deeplearning.ai\/langchain\/lesson\/1\/introduction\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">learn.deeplearning.ai\/langchain\/l\u2026<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>LangChain\u662f\u4ec0\u4e48\uff1f\u4e00\u4e2a\u5f00\u6e90\u7684\u3001\u7528\u4e8e\u6784\u5efaLLM\u5e94\u7528\u7684\u5f00\u53d1\u6846\u67b6\u3002 LangChain\u6240\u505a\u7684\uff0c\u5c31\u662f\u628a\u5f00\u53d1LLM\u5e94\u7528\u8fc7\u7a0b\u4e2d\u7684\u4e00\u4e9b\u516c\u5171\u7684\u90e8\u5206\u62bd\u8c61\u51fa\u6765\u3002<\/p>\n","protected":false},"author":1,"featured_media":2288,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"\u590d\u5236 | \u4ee3\u7801 | AI - \u5948\u65af\u79d1\u6280\u793e\u533a","rank_math_description":"\u5948\u65af\u79d1\u6280\u793e\u533a\u4e13\u6ce8\u4e8e\u590d\u5236\u3001\u4ee3\u7801\u3001AI\u3001LangChain\u3001\u6b65\u9aa4\uff0c\u63d0\u4f9b\u4e13\u4e1a\u7684\u5206\u4eab\u548c\u8ba8\u8bba\u5e73\u53f0\u3002","rank_math_focus_keyword":"\u590d\u5236,\u4ee3\u7801,AI,LangChain,\u6b65\u9aa4","views":"35","footnotes":""},"categories":[3],"tags":[126,127,128,129,136],"collection":[],"class_list":["post-1187","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\/1187","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=1187"}],"version-history":[{"count":0,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts\/1187\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media\/2288"}],"wp:attachment":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media?parent=1187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/categories?post=1187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/tags?post=1187"},{"taxonomy":"collection","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/collection?post=1187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}