{"id":91420,"date":"2025-01-05T20:28:49","date_gmt":"2025-01-05T16:58:49","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/"},"modified":"2025-01-05T20:28:49","modified_gmt":"2025-01-05T16:58:49","slug":"boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/","title":{"rendered":"\u062a\u0642\u0648\u06cc\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc: \u0639\u0648\u0627\u0645\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc\u060c LangGraph \u0648 RAG \u0628\u0631\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644"},"content":{"rendered":"<div data-article-id=\"2190178\" id=\"article-body\">\n<p>\u062f\u0631 \u0639\u0635\u0631 \u0631\u0636\u0627\u06cc\u062a \u0641\u0648\u0631\u06cc\u060c \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc \u062f\u06cc\u06af\u0631 \u06cc\u06a9 \u0628\u062e\u0634 \u0646\u06cc\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u06a9\u0644 \u0634\u0631\u06a9\u062a \u0627\u0633\u062a.<\/p>\n<p><strong>\u0622\u06cc\u0627 \u0645\u06cc\u200c\u062f\u0627\u0646\u0633\u062a\u06cc\u062f \u06a9\u0647 86 \u062f\u0631\u0635\u062f \u0627\u0632 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u062a\u0646\u0647\u0627 \u067e\u0633 \u0627\u0632 \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u0628\u062f \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u0646\u062f\u061f<\/strong><\/p>\n<p>\u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0633\u0646\u062a\u06cc \u063a\u0631\u0642 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0641\u200c\u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0628\u06cc\u200c\u067e\u0627\u06cc\u0627\u0646 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p><\/p>\n<p>\u0627\u0645\u0627 \u0628\u0627\u0632\u06cc \u062f\u0631 \u062d\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0633\u062a. <strong>\u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0632\u0628\u0627\u0646 \u0628\u0632\u0631\u06af (LLM) \u0648 \u0639\u0648\u0627\u0645\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u062e\u062f\u0645\u0627\u062a \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0645\u062a\u062d\u0648\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u06a9\u0633\u0628 \u0648 \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u0646\u062f \u062a\u0627 \u0627\u0646\u062a\u0638\u0627\u0631\u0627\u062a \u0631\u0648 \u0628\u0647 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0631\u0627 \u0628\u0627 \u0633\u0631\u0639\u062a \u0648 \u062f\u0642\u062a \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u0646\u062f. \u0645\u0637\u0627\u0644\u0639\u0627\u062a \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 <strong>\u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0631\u0636\u0627\u06cc\u062a \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 15 \u062a\u0627 25 \u062f\u0631\u0635\u062f \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f \u0648 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0631\u0627 20 \u062a\u0627 40 \u062f\u0631\u0635\u062f \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f.<\/strong>.<\/p>\n<p>\u062f\u0648\u0631\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0633\u062a\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a. <strong>\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u062a\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0628\u0627\u06a9\u06cc\u0641\u06cc\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0641\u0646\u06cc\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <strong>\u0644\u0627\u0646\u06af \u06af\u0631\u0627\u0641<\/strong>\u060c <strong>LangChain<\/strong>\u060c \u0648 <strong>RAG<\/strong> \u0628\u0647:<\/p>\n<ul>\n<li>\n<p><strong>\u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0631\u0627 24\/7 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f \u0648 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f<\/strong> \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u0634\u062a\u0631\u06cc<\/p>\n<\/li>\n<li>\n<p>\u0627\u0647\u0631\u0645 <strong>\u0639\u0648\u0627\u0645\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0628\u0631\u0627\u06cc \u0645\u0631\u062a\u0628 \u06a9\u0631\u062f\u0646 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u062f\u0633\u062a\u0647 \u0647\u0627 \u0648 \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628.<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <strong>Retrieval-Augmented Generation (RAG)<\/strong> \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062d\u0635\u0648\u0644 \u0648 \u062e\u062f\u0645\u0627\u062a.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645!<\/strong><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%B3%DB%8C%D9%88%D9%86_%D8%A7%DB%8C%D9%85%DB%8C%D9%84_%D8%A8%D8%A7_%D9%87%D9%88%D8%B4_%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C_%D8%A8%D8%A7_LangGraph_%D9%88_RAG\" >\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0627 LangGraph \u0648 RAG<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#LangChain_%D9%88_LangGraph\" >LangChain \u0648 LangGraph<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#RAG_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >RAG \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D9%86%D9%85%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%B3%D8%B7%D8%AD_%D8%A8%D8%A7%D9%84%D8%A7\" >\u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0633\u0637\u062d \u0628\u0627\u0644\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%A7%D9%84%D9%81_%D9%86%D8%B8%D8%A7%D8%B1%D8%AA_%D9%88_%D8%B7%D8%A8%D9%82%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\" >\u0627\u0644\u0641. \u0646\u0638\u0627\u0631\u062a \u0648 \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0627\u06cc\u0645\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%A8_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D9%BE%D8%A7%D8%B3%D8%AE_%D9%BE%D9%88%DB%8C%D8%A7\" >\u0628. \u062a\u0648\u0644\u06cc\u062f \u067e\u0627\u0633\u062e \u067e\u0648\u06cc\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%AC_%D8%AA%D8%B6%D9%85%DB%8C%D9%86_%DA%A9%DB%8C%D9%81%DB%8C%D8%AA_%D9%87%D9%88%D8%B4_%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C\" >\u062c. \u062a\u0636\u0645\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#D_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%AE%D9%88%D8%AF%DA%A9%D8%A7%D8%B1_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\" >D. \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u06cc\u0645\u06cc\u0644<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_%D8%AA%D9%81%DA%A9%DB%8C%DA%A9_%DA%AF%D8%A7%D9%85_%D8%A8%D9%87_%DA%AF%D8%A7%D9%85\" >\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f: \u062a\u0641\u06a9\u06cc\u06a9 \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D9%86%D8%B4_%D8%A8%D8%B1%D8%A7%DB%8C_RAG\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u0628\u0631\u0627\u06cc RAG<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#1_%D9%86%D8%B8%D8%A7%D8%B1%D8%AA_%D8%A8%D8%B1_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\" >1. \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0627\u06cc\u0645\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#2_%D8%AF%D8%B3%D8%AA%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\" >2. \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0627\u06cc\u0645\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#3_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D9%BE%D8%A7%D8%B3%D8%AE\" >3. \u062a\u0648\u0644\u06cc\u062f \u067e\u0627\u0633\u062e<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%A7%D9%84%D9%81_%D8%B4%DA%A9%D8%A7%DB%8C%D8%A7%D8%AA_%D9%88_%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D8%AF%D8%A7%D8%AA\" >\u0627\u0644\u0641 \u0634\u06a9\u0627\u06cc\u0627\u062a \u0648 \u0627\u0646\u062a\u0642\u0627\u062f\u0627\u062a:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%A8_%D8%A7%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85_%D9%85%D8%AD%D8%B5%D9%88%D9%84\" >\u0628 \u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u0645\u062d\u0635\u0648\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#4_%D8%AA%D8%B6%D9%85%DB%8C%D9%86_%DA%A9%DB%8C%D9%81%DB%8C%D8%AA_%D9%85%D8%B7%D9%85%D8%A6%D9%86_%D8%B4%D9%88%DB%8C%D8%AF_%DA%A9%D9%87_%D8%A7%DB%8C%D9%85%DB%8C%D9%84_%D9%87%D8%A7_%D8%B9%D8%A7%D9%84%DB%8C_%D9%87%D8%B3%D8%AA%D9%86%D8%AF\" >4. \u062a\u0636\u0645\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#5_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\" >5. \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0645\u06cc\u0644<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D9%85%D8%B2%D8%A7%DB%8C%D8%A7_%D9%88_%D8%AA%D8%A7%D8%AB%DB%8C%D8%B1\" >\u0645\u0632\u0627\u06cc\u0627 \u0648 \u062a\u0627\u062b\u06cc\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C_%D8%AF%D8%B1_%D8%AF%D9%86%DB%8C%D8%A7%DB%8C_%D9%88%D8%A7%D9%82%D8%B9%DB%8C\" >\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/boost-customer-support-ai-agents-langgraph-and-rag-for-email-automation-21hj\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%B3%DB%8C%D9%88%D9%86_%D8%A7%DB%8C%D9%85%DB%8C%D9%84_%D8%A8%D8%A7_%D9%87%D9%88%D8%B4_%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C_%D8%A8%D8%A7_LangGraph_%D9%88_RAG\"><\/span>\n<p>  <strong>\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0627 LangGraph \u0648 RAG<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631 <strong>\u0633\u06cc\u0633\u062a\u0645 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0645\u0646 \u0633\u0627\u062e\u062a\u0645\u060c \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0627\u0628\u062a\u062f\u0627 \u0641\u0646\u200c\u0622\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u0645: <strong>LangChain<\/strong>\u060c <strong>\u0644\u0627\u0646\u06af \u06af\u0631\u0627\u0641<\/strong>\u060c \u0648 <strong>Retrieval-Augmented Generation (RAG)<\/strong>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"LangChain_%D9%88_LangGraph\"><\/span>\n<p>  <strong>LangChain \u0648 LangGraph<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>LangChain<\/strong> \u0686\u0627\u0631\u0686\u0648\u0628\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a <strong>LLM (\u0645\u0627\u0646\u0646\u062f GPT-4o\u060c Google Gemini\u060c LLAMA3)<\/strong> \u0648 <strong>\u0644\u0627\u0646\u06af \u06af\u0631\u0627\u0641<\/strong> \u0628\u0631 \u0631\u0648\u06cc \u0622\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u0646 \u0686\u0646\u062f\u06cc\u0646 \u0632\u0646\u062c\u06cc\u0631\u0647 (\u06cc\u0627 \u0628\u0627\u0632\u06cc\u06af\u0631\u0627\u0646) \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u0686\u0631\u062e\u0647 \u0627\u06cc \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0641\u06a9\u0631 \u06a9\u0646 <strong>\u0644\u0627\u0646\u06af \u06af\u0631\u0627\u0641<\/strong> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0631\u06a9\u0633\u062a\u0631\u0627\u062a\u0648\u0631 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631 \u062f\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0648 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc \u0628\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u06af\u0631\u0627\u0641 &#8211; \u0634\u0628\u06a9\u0647 \u0627\u06cc \u0627\u0632 \u06af\u0631\u0647 \u0647\u0627\u06cc \u0628\u0647 \u0647\u0645 \u067e\u06cc\u0648\u0633\u062a\u0647\u060c \u0628\u0631\u062a\u0631\u06cc \u0645\u06cc \u06cc\u0627\u0628\u062f. \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u0648 \u067e\u0648\u06cc\u0627 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u062f \u062a\u0627 \u0628\u0627 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0648 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0633\u0627\u0632\u06af\u0627\u0631 \u0634\u0648\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsc6peygt49kj5268xtsy.png\" alt=\"\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0644\u0627\u0646\u06af\u06af\u0631\u0627\u0641\" loading=\"lazy\" width=\"305\" height=\"405\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"RAG_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  <strong>RAG \u0686\u06cc\u0633\u062a\u061f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0634\u0646\u06cc\u062f\u0647 \u0627\u06cc\u062f <strong>Retrieval-Augmented Generation (RAG)<\/strong>\u060c \u0627\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0646\u0642\u0634 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0627\u062e\u062a\u0635\u0627\u0631 \u062a\u0648\u0636\u06cc\u062d \u062f\u0647\u0645. \u0627\u06a9\u062b\u0631 LLM \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0648\u0631\u0647 \u0627\u06cc \u0628\u0631 \u0631\u0648\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0628\u0632\u0631\u06af \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc \u0628\u06cc\u0646\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0627\u063a\u0644\u0628 \u0641\u0627\u0642\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062e\u06cc\u0631 \u06cc\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0622\u0645\u0648\u0632\u0634 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a.<\/p>\n<p><strong>RAG<\/strong> \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0631\u0627 \u062a\u0648\u0633\u0637 <strong>\u0627\u062a\u0635\u0627\u0644 LLM \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u062f\u0627\u062f\u0647 \u062e\u0627\u0631\u062c\u06cc<\/strong>. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 (\u0645\u0627\u0646\u0646\u062f \u0627\u0633\u0646\u0627\u062f \u0634\u0631\u06a9\u062a\u060c \u0648\u0628\u200c\u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u06cc\u0627 \u067e\u0631\u0633\u0634\u200c\u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644) \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0632 \u0622\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0648 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0627\u0635\u0644\u060c \u0627\u06cc\u0646 \u0645\u0627\u0646\u0646\u062f \u062a\u062c\u0647\u06cc\u0632 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0631\u062c\u0639 \u0628\u0631\u0627\u06cc \u0645\u0634\u0648\u0631\u062a \u0642\u0628\u0644 \u0627\u0632 \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628\u060c \u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0627\u0635\u0648\u0644 LangChain\u060c LangGraph \u0648 RAG \u0631\u0627 \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u06cc\u0645\u060c <strong>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0648\u0627\u0642\u0639\u0627\u064b \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f!<\/strong><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%D8%B3%D8%B7%D8%AD_%D8%A8%D8%A7%D9%84%D8%A7\"><\/span>\n<p>  <strong>\u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0633\u0637\u062d \u0628\u0627\u0644\u0627<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0633\u06cc\u0633\u062a\u0645 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0628\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u0633\u062a\u0645\u0631 \u0635\u0646\u062f\u0648\u0642 \u0648\u0631\u0648\u062f\u06cc \u0622\u0698\u0627\u0646\u0633\u060c \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u060c \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u06cc\u0641\u06cc\u062a \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u0622\u0646\u0647\u0627 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0632\u06cc\u0631 \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0635\u0631\u06cc \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprm63tygxdw0o2jw389g.png\" alt=\"\u0646\u0645\u0648\u062f\u0627\u0631 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644\" loading=\"lazy\" width=\"652\" height=\"1052\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%84%D9%81_%D9%86%D8%B8%D8%A7%D8%B1%D8%AA_%D9%88_%D8%B7%D8%A8%D9%82%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\"><\/span>\n<p>  <strong>\u0627\u0644\u0641. \u0646\u0638\u0627\u0631\u062a \u0648 \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0627\u06cc\u0645\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong>Gmail API<\/strong>\u060c \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0637\u0648\u0631 \u0641\u0639\u0627\u0644 \u0635\u0646\u062f\u0648\u0642 \u0648\u0631\u0648\u062f\u06cc \u0622\u0698\u0627\u0646\u0633 \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0641\u0648\u0631\u0627\u064b \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0648 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f <strong>\u0639\u0627\u0645\u0644 \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0628\u0647 \u0686\u0647\u0627\u0631 \u06a9\u0644\u0627\u0633 \u06a9\u0644\u06cc\u062f\u06cc:<\/p>\n<ul>\n<li>\n<p><strong>\u0634\u06a9\u0627\u06cc\u062a \u0645\u0634\u062a\u0631\u06cc:<\/strong> \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0646\u0627\u0631\u0636\u0627\u06cc\u062a\u06cc \u06cc\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u0645\u062d\u0635\u0648\u0644:<\/strong> \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0627\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0645\u0634\u062a\u0631\u06cc:<\/strong> \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0638\u0631\u0627\u062a\u060c \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0627\u062a \u06cc\u0627 \u062a\u0645\u062c\u06cc\u062f\u0647\u0627\u06cc \u06a9\u0644\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u063a\u06cc\u0631 \u0645\u0631\u062a\u0628\u0637:<\/strong> \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u0628\u06cc \u0631\u0628\u0637 \u0628\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0622\u0698\u0627\u0646\u0633 \u06a9\u0647 \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D9%BE%D8%A7%D8%B3%D8%AE_%D9%BE%D9%88%DB%8C%D8%A7\"><\/span>\n<p>  <strong>\u0628. \u062a\u0648\u0644\u06cc\u062f \u067e\u0627\u0633\u062e \u067e\u0648\u06cc\u0627<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0641\u0631\u0622\u06cc\u0646\u062f \u067e\u0627\u0633\u062e \u0628\u0631 \u0627\u0633\u0627\u0633 \u062f\u0633\u062a\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u0633\u0627\u0632\u06af\u0627\u0631 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\n<p><strong>\u0634\u06a9\u0627\u06cc\u0627\u062a \u0648 \u0627\u0646\u062a\u0642\u0627\u062f\u0627\u062a:<\/strong> \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u06cc\u06a9 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f <strong>\u0639\u0627\u0645\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong>\u060c \u06a9\u0647 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0634\u062e\u0635\u06cc \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0646\u06af\u0631\u0627\u0646\u06cc \u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u0627\u0632 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0622\u0646\u0647\u0627 \u062a\u0634\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u062f. <strong>RAG (\u0646\u0633\u0644 \u0627\u0641\u0632\u0627\u06cc\u0634 \u06cc\u0627\u0641\u062a\u0647 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc)<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u0645\u062d\u0635\u0648\u0644:<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <strong>RAG<\/strong> \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0642\u06cc\u0642 \u0648 \u0628\u0647 \u0631\u0648\u0632 \u0627\u0632 \u0622\u0698\u0627\u0646\u0633 <strong>\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634<\/strong> (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0645\u062d\u0635\u0648\u0644\u060c \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644). \u0633\u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <strong>\u0639\u0627\u0645\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0627\u0633\u062e \u062c\u0627\u0645\u0639 \u0648 \u062f\u0642\u06cc\u0642<\/p>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AC_%D8%AA%D8%B6%D9%85%DB%8C%D9%86_%DA%A9%DB%8C%D9%81%DB%8C%D8%AA_%D9%87%D9%88%D8%B4_%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C\"><\/span>\n<p>  <strong>\u062c. \u062a\u0636\u0645\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u062a\u062d\u062a \u0628\u0631\u0631\u0633\u06cc \u06a9\u06cc\u0641\u06cc\u062a \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u06cc\u06a9 <strong>\u0639\u0627\u0645\u0644 \u062a\u0635\u062d\u06cc\u062d \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\n<p><strong>\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc:<\/strong> \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0632 \u0646\u0638\u0631 \u0628\u0635\u0631\u06cc \u062c\u0630\u0627\u0628 \u0627\u0633\u062a \u0648 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0631\u062a\u0628\u0627\u0637:<\/strong> \u067e\u0627\u0633\u062e \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0633\u0624\u0627\u0644\u0627\u062a \u06cc\u0627 \u0646\u06af\u0631\u0627\u0646\u06cc \u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0644\u062d\u0646:<\/strong> \u0644\u062d\u0646 \u0628\u0627 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u062d\u0631\u0641\u0647 \u0627\u06cc \u0648 \u0628\u0631\u0646\u062f \u062e\u0627\u0635 \u0622\u0698\u0627\u0646\u0633 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f.<\/p>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"D_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%AE%D9%88%D8%AF%DA%A9%D8%A7%D8%B1_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\"><\/span>\n<p>  <strong>D. \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u06cc\u0645\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0632 \u0645\u0631\u062d\u0644\u0647 \u062a\u0636\u0645\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a \u0639\u0628\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u0633\u0631\u06cc\u0639 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_%D8%AA%D9%81%DA%A9%DB%8C%DA%A9_%DA%AF%D8%A7%D9%85_%D8%A8%D9%87_%DA%AF%D8%A7%D9%85\"><\/span>\n<p>  <strong>\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f: \u062a\u0641\u06a9\u06cc\u06a9 \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D9%86%D8%B4_%D8%A8%D8%B1%D8%A7%DB%8C_RAG\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u0628\u0631\u0627\u06cc RAG<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0627 \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a <strong>Retrieval-Augmented Generation (RAG)<\/strong>\u060c \u0645\u0627 \u0628\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u06a9\u0627\u0645\u0644\u0627\u064b \u0622\u0645\u0627\u062f\u0647 \u062d\u0627\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0698\u0627\u0646\u0633 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0648 \u0645\u0631\u062a\u0628\u0637\u06cc \u0631\u0627 \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0648 \u062e\u062f\u0645\u0627\u062a \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647\u060c \u0645\u0646 \u0642\u0628\u0644\u0627\u064b \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0647 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0646\u0645\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u0645 <strong>ChatGPT<\/strong>. \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u060c \u0645\u0631\u0627\u062d\u0644 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc a \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <strong>\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 RAG<\/strong>:<\/p>\n<ol>\n<li>\n<p><strong>\u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0627\u0633\u0646\u0627\u062f:<\/strong> \u0645\u0627 \u0628\u0627 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0627\u0633\u0646\u0627\u062f \u0622\u0698\u0627\u0646\u0633 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0633\u0646\u0627\u062f \u0631\u0627 \u062a\u06a9\u0647 \u062a\u06a9\u0647 \u06a9\u0646\u06cc\u062f:<\/strong> \u0633\u067e\u0633 \u0633\u0646\u062f \u0631\u0627 \u0628\u0647 \u0642\u0637\u0639\u0627\u062a \u06a9\u0648\u0686\u06a9\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u0647\u0645 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u062e\u0634 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f <strong>LLMs<\/strong> \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u062b\u0631<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u06cc\u062c\u0627\u062f \u062c\u0627\u0633\u0627\u0632\u06cc \u0647\u0627:<\/strong> \u0645\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <strong>\u0645\u062f\u0644 \u062a\u0639\u0628\u06cc\u0647<\/strong> \u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0647\u0631 \u062a\u06a9\u0647 \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0631\u062f\u0627\u0631\u06cc.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc:<\/strong> \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u06cc\u0646 \u062a\u0639\u0628\u06cc\u0647\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<\/li>\n<\/ol>\n<p>\u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0686\u06cc\u0632\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647\u060c \u0645\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645 <strong>\u06a9\u0631\u0648\u0645\u0627 \u062f\u06cc \u0628\u06cc<\/strong>\u060c \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u062d\u0644\u06cc\u060c \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 <strong>\u0645\u062f\u0644 \u062c\u0627\u0633\u0627\u0632\u06cc \u06af\u0648\u06af\u0644<\/strong>. \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u062a\u0631\u06cc \u0645\u0627\u0646\u0646\u062f <strong>\u06a9\u0627\u062c<\/strong> <strong>\u06cc\u0627<\/strong> <strong>\u0642\u062f\u0631\u0627\u0646\u062a<\/strong>.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"n\">langchain_community.document_loaders<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">TextLoader<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">langchain_text_splitters<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">RecursiveCharacterTextSplitter<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">langchain_google_genai<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ChatGoogleGenerativeAI<\/span><span class=\"p\">,<\/span> <span class=\"n\">GoogleGenerativeAIEmbeddings<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">langchain_chroma<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Chroma<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">langchain_core.prompts<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ChatPromptTemplate<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">langchain_core.runnables<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">RunnablePassthrough<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">langchain_core.output_parsers<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">StrOutputParser<\/span>\n\n<span class=\"c1\"># Loading Docs\n<\/span><span class=\"n\">loader<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">TextLoader<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">.\/data\/agency.txt<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">docs<\/span> <span class=\"o\">=<\/span> <span class=\"n\">loader<\/span><span class=\"p\">.<\/span><span class=\"nf\">load<\/span><span class=\"p\">()<\/span>\n\n<span class=\"c1\"># Split document into chuncks\n<\/span><span class=\"n\">doc_splitter<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">RecursiveCharacterTextSplitter<\/span><span class=\"p\">(<\/span><span class=\"n\">chunk_size<\/span><span class=\"o\">=<\/span><span class=\"mi\">300<\/span><span class=\"p\">,<\/span> <span class=\"n\">chunk_overlap<\/span><span class=\"o\">=<\/span><span class=\"mi\">50<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">doc_chunks<\/span> <span class=\"o\">=<\/span> <span class=\"n\">doc_splitter<\/span><span class=\"p\">.<\/span><span class=\"nf\">split_documents<\/span><span class=\"p\">(<\/span><span class=\"n\">docs<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Creating vector embeddings\n<\/span><span class=\"n\">embeddings<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">GoogleGenerativeAIEmbeddings<\/span><span class=\"p\">(<\/span><span class=\"n\">model<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">models\/embedding-001<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># Updated model name\n<\/span><span class=\"n\">vectorstore<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Chroma<\/span><span class=\"p\">.<\/span><span class=\"nf\">from_documents<\/span><span class=\"p\">(<\/span><span class=\"n\">doc_chunks<\/span><span class=\"p\">,<\/span> <span class=\"n\">embeddings<\/span><span class=\"p\">,<\/span> <span class=\"n\">persist_directory<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">db<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Semantic vector search retriever\n<\/span><span class=\"n\">vectorstore_retriever<\/span> <span class=\"o\">=<\/span> <span class=\"n\">vectorstore<\/span><span class=\"p\">.<\/span><span class=\"nf\">as_retriever<\/span><span class=\"p\">(<\/span><span class=\"n\">search_kwargs<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">k<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">})<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0633\u062a\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u062a\u062c\u0633\u0645 \u06a9\u0646\u06cc\u0645: <strong>\u0646\u0645\u0648\u062f\u0627\u0631 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646<\/strong> \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0627 <strong>\u0644\u0627\u0646\u06af \u06af\u0631\u0627\u0641<\/strong>. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># load inbox emails\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">set_entry_point<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">load_emails<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># check if there are new emails to process\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_edge<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">load_emails<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">is_email_inbox_empty<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_conditional_edges<\/span><span class=\"p\">(<\/span>\n    <span class=\"sh\">\"<\/span><span class=\"s\">is_email_inbox_empty<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">nodes<\/span><span class=\"p\">.<\/span><span class=\"n\">check_new_emails<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">process<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">categorize_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">empty<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">END<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"c1\"># route email based on category\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_conditional_edges<\/span><span class=\"p\">(<\/span>\n    <span class=\"sh\">\"<\/span><span class=\"s\">categorize_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">nodes<\/span><span class=\"p\">.<\/span><span class=\"n\">route_email_based_on_category<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">product related<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">construct_rag_queries<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">not product related<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">email_writer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"c1\"># Feedback or Complaint\n<\/span>        <span class=\"sh\">\"<\/span><span class=\"s\">unrelated<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">skip_unrelated_email<\/span><span class=\"sh\">\"<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"c1\"># pass constructed queries to RAG chain to get information\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_edge<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">construct_rag_queries<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">retrieve_from_rag<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\"># give information to writer agent to write the email\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_edge<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">retrieve_from_rag<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">email_writer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\"># proofread the generated email\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_edge<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">email_writer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">email_proofreader<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\"># check if email is sendable or not, if not rewrite the email\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_conditional_edges<\/span><span class=\"p\">(<\/span>\n    <span class=\"sh\">\"<\/span><span class=\"s\">email_proofreader<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">nodes<\/span><span class=\"p\">.<\/span><span class=\"n\">must_rewrite<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">send<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">send_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">rewrite<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">email_writer<\/span><span class=\"sh\">\"<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"c1\"># check if there are still emails to be processed\n<\/span><span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_edge<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">send_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">is_email_inbox_empty<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">workflow<\/span><span class=\"p\">.<\/span><span class=\"nf\">add_edge<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">skip_unrelated_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">is_email_inbox_empty<\/span><span class=\"sh\">\"<\/span> <span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u0628\u062e\u0634 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0631\u0627 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645!<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_%D9%86%D8%B8%D8%A7%D8%B1%D8%AA_%D8%A8%D8%B1_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\"><\/span>\n<p>  <strong>1. \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0627\u06cc\u0645\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0628\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u0633\u062a\u0645\u0631 \u0628\u0631 \u0622\u0698\u0627\u0646\u0633 \u0622\u063a\u0627\u0632 \u0645\u06cc \u0634\u0648\u062f <strong>\u0635\u0646\u062f\u0648\u0642 \u0648\u0631\u0648\u062f\u06cc \u062c\u06cc\u0645\u06cc\u0644<\/strong>. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong>Gmail API<\/strong>\u060c \u06a9\u0647 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0631\u062a\u0628 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u06a9\u0644\u0627\u0633 \u062e\u0627\u0635\u06cc \u0633\u0627\u062e\u062a\u0645 <code>GmailToolsClass<\/code> \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062c\u06cc\u0645\u06cc\u0644. <strong>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u06a9\u0627\u0645\u0644 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<\/strong> Github \u0645\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0631\u0648\u06cc \u0686\u06af\u0648\u0646\u06af\u06cc \u0622\u0646 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645 <strong>\u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/strong>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">class<\/span> <span class=\"nc\">GmailToolsClass<\/span><span class=\"p\">:<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">__init__<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">_get_gmail_service<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">fetch_unanswered_emails<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">max_results<\/span><span class=\"o\">=<\/span><span class=\"mi\">50<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n            <span class=\"c1\"># 1. Get recent emails\n<\/span>            <span class=\"n\">recent_emails<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">fetch_recent_emails<\/span><span class=\"p\">(<\/span><span class=\"n\">max_results<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">recent_emails<\/span><span class=\"p\">:<\/span> <span class=\"k\">return<\/span> <span class=\"p\">[]<\/span>\n\n            <span class=\"c1\"># 2. Get draft replies to filter out already answered threads\n<\/span>            <span class=\"n\">drafts<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">fetch_draft_replies<\/span><span class=\"p\">()<\/span>\n            <span class=\"n\">threads_with_drafts<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"n\">draft<\/span><span class=\"p\">[<\/span><span class=\"sh\">'<\/span><span class=\"s\">threadId<\/span><span class=\"sh\">'<\/span><span class=\"p\">]<\/span> <span class=\"k\">for<\/span> <span class=\"n\">draft<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">drafts<\/span><span class=\"p\">}<\/span>\n\n            <span class=\"c1\"># 3. Process each new email\n<\/span>            <span class=\"n\">seen_threads<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">set<\/span><span class=\"p\">()<\/span>\n            <span class=\"n\">unanswered_emails<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n            <span class=\"k\">for<\/span> <span class=\"n\">email<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">recent_emails<\/span><span class=\"p\">:<\/span>\n                <span class=\"n\">thread_id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">email<\/span><span class=\"p\">[<\/span><span class=\"sh\">'<\/span><span class=\"s\">threadId<\/span><span class=\"sh\">'<\/span><span class=\"p\">]<\/span>\n                <span class=\"c1\"># Skip if thread was seen before or has a draft reply\n<\/span>                <span class=\"k\">if<\/span> <span class=\"n\">thread_id<\/span> <span class=\"ow\">not<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">seen_threads<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">thread_id<\/span> <span class=\"ow\">not<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">threads_with_drafts<\/span><span class=\"p\">:<\/span>\n                    <span class=\"n\">seen_threads<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">thread_id<\/span><span class=\"p\">)<\/span>\n                    <span class=\"n\">email_info<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">_get_email_info<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">[<\/span><span class=\"sh\">'<\/span><span class=\"s\">id<\/span><span class=\"sh\">'<\/span><span class=\"p\">])<\/span>\n                    <span class=\"c1\"># Skip if email is sent from the agency (not received)\n<\/span>                    <span class=\"k\">if<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">_should_skip_email<\/span><span class=\"p\">(<\/span><span class=\"n\">email_info<\/span><span class=\"p\">):<\/span>\n                        <span class=\"k\">continue<\/span>\n                    <span class=\"n\">unanswered_emails<\/span><span class=\"p\">.<\/span><span class=\"nf\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">email_info<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">return<\/span> <span class=\"n\">unanswered_emails<\/span>\n\n        <span class=\"k\">except<\/span> <span class=\"nb\">Exception<\/span> <span class=\"k\">as<\/span> <span class=\"n\">e<\/span><span class=\"p\">:<\/span>\n            <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">An error occurred: <\/span><span class=\"si\">{<\/span><span class=\"n\">e<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">return<\/span> <span class=\"p\">[]<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">fetch_recent_emails<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">max_results<\/span><span class=\"o\">=<\/span><span class=\"mi\">50<\/span><span class=\"p\">):<\/span>\n        <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Fetches emails from the last 8 hours.<\/span><span class=\"sh\">\"\"\"<\/span>\n        <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n            <span class=\"c1\"># Query emails from the last 8 hours\n<\/span>            <span class=\"n\">now<\/span> <span class=\"o\">=<\/span> <span class=\"n\">datetime<\/span><span class=\"p\">.<\/span><span class=\"nf\">now<\/span><span class=\"p\">()<\/span>\n            <span class=\"n\">delay<\/span> <span class=\"o\">=<\/span> <span class=\"n\">now<\/span> <span class=\"o\">-<\/span> <span class=\"nf\">timedelta<\/span><span class=\"p\">(<\/span><span class=\"n\">hours<\/span><span class=\"o\">=<\/span><span class=\"mi\">8<\/span><span class=\"p\">)<\/span>\n            <span class=\"n\">after_timestamp<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">delay<\/span><span class=\"p\">.<\/span><span class=\"nf\">timestamp<\/span><span class=\"p\">())<\/span>\n            <span class=\"n\">before_timestamp<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">now<\/span><span class=\"p\">.<\/span><span class=\"nf\">timestamp<\/span><span class=\"p\">())<\/span>\n            <span class=\"n\">query<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">after:<\/span><span class=\"si\">{<\/span><span class=\"n\">after_timestamp<\/span><span class=\"si\">}<\/span><span class=\"s\"> before:<\/span><span class=\"si\">{<\/span><span class=\"n\">before_timestamp<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span>\n\n            <span class=\"n\">results<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span><span class=\"p\">.<\/span><span class=\"nf\">users<\/span><span class=\"p\">().<\/span><span class=\"nf\">messages<\/span><span class=\"p\">().<\/span><span class=\"nf\">list<\/span><span class=\"p\">(<\/span>\n                <span class=\"n\">userId<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">me<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">q<\/span><span class=\"o\">=<\/span><span class=\"n\">query<\/span><span class=\"p\">,<\/span> <span class=\"n\">maxResults<\/span><span class=\"o\">=<\/span><span class=\"n\">max_results<\/span>\n            <span class=\"p\">).<\/span><span class=\"nf\">execute<\/span><span class=\"p\">()<\/span>\n            <span class=\"n\">messages<\/span> <span class=\"o\">=<\/span> <span class=\"n\">results<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">messages<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">[])<\/span>\n            <span class=\"k\">return<\/span> <span class=\"n\">messages<\/span>\n\n        <span class=\"k\">except<\/span> <span class=\"nb\">Exception<\/span> <span class=\"k\">as<\/span> <span class=\"n\">error<\/span><span class=\"p\">:<\/span>\n            <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">An error occurred while fetching emails: <\/span><span class=\"si\">{<\/span><span class=\"n\">error<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">return<\/span> <span class=\"p\">[]<\/span>\n\n    <span class=\"c1\"># ... other methods ...\n<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">_get_email_info<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">msg_id<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">message<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span><span class=\"p\">.<\/span><span class=\"nf\">users<\/span><span class=\"p\">().<\/span><span class=\"nf\">messages<\/span><span class=\"p\">().<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">userId<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">me<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nb\">id<\/span><span class=\"o\">=<\/span><span class=\"n\">msg_id<\/span><span class=\"p\">,<\/span> <span class=\"nb\">format<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">full<\/span><span class=\"sh\">\"<\/span>\n        <span class=\"p\">).<\/span><span class=\"nf\">execute<\/span><span class=\"p\">()<\/span>\n\n        <span class=\"n\">payload<\/span> <span class=\"o\">=<\/span> <span class=\"n\">message<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">payload<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{})<\/span>\n        <span class=\"n\">headers<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"n\">header<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">name<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"nf\">lower<\/span><span class=\"p\">():<\/span> <span class=\"n\">header<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">value<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]<\/span> <span class=\"k\">for<\/span> <span class=\"n\">header<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">payload<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">headers<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">[])}<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">id<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">msg_id<\/span><span class=\"p\">,<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">threadId<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">message<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">threadId<\/span><span class=\"sh\">\"<\/span><span class=\"p\">),<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">messageId<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">headers<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">message-id<\/span><span class=\"sh\">\"<\/span><span class=\"p\">),<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">references<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">headers<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">references<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"\"<\/span><span class=\"p\">),<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">sender<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">headers<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">from<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Unknown<\/span><span class=\"sh\">\"<\/span><span class=\"p\">),<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">subject<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">headers<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">subject<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">No Subject<\/span><span class=\"sh\">\"<\/span><span class=\"p\">),<\/span>\n            <span class=\"sh\">\"<\/span><span class=\"s\">body<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">_get_email_body<\/span><span class=\"p\">(<\/span><span class=\"n\">payload<\/span><span class=\"p\">),<\/span>\n        <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0628\u0627\u0634\u0647 \u062f\u0627\u062e\u0644\u0634 \u0686\u0647 \u062e\u0628\u0631\u0647<\/strong> <code>fetch_unanswered_emails<\/code>  ?<\/p>\n<ul>\n<li>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>fetch_recent_emails<\/code> \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0627\u0632 <strong>8 \u0633\u0627\u0639\u062a \u06af\u0630\u0634\u062a\u0647<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633 \u067e\u0627\u0633\u062e \u0647\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f <strong>\u0627\u0632 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u0642\u0628\u0644\u0627\u064b \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0647\u0645\u0647 \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0631\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 <strong>(\u0641\u0631\u0633\u062a\u0646\u062f\u0647\u060c \u0645\u0648\u0636\u0648\u0639\u060c \u0628\u062f\u0646)<\/strong>\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u0647\u0631 \u0627\u06cc\u0645\u06cc\u0644\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u062e\u0648\u062f \u0622\u0698\u0627\u0646\u0633 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f \u0635\u0631\u0641 \u0646\u0638\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%AF%D8%B3%D8%AA%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\"><\/span>\n<p>  <strong>2. \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0627\u06cc\u0645\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0633 \u0627\u0632 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c <strong>\u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0639\u0627\u0645\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0622\u0646\u0647\u0627 \u0628\u0647 \u0686\u0647\u0627\u0631 \u062f\u0633\u062a\u0647 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u0634\u0648\u0646\u062f: &#8220;\u0634\u06a9\u0627\u06cc\u062a \u0645\u0634\u062a\u0631\u06cc&#8221;\u060c &#8220;\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u0645\u062d\u0635\u0648\u0644&#8221;\u060c &#8220;\u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0645\u0634\u062a\u0631\u06cc&#8221; \u06cc\u0627 &#8220;\u063a\u06cc\u0631 \u0645\u0631\u062a\u0628\u0637&#8221;.<\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc <strong>\u0639\u0627\u0645\u0644 \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">CATEGORIZE_EMAIL_PROMPT<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n# **Role:**\n\nYou are a highly skilled customer support specialist working for a SaaS company specializing in AI agent design. Your expertise lies in understanding customer intent and meticulously categorizing emails to ensure they are handled efficiently.\n\n# **Instructions:**\n\n1. Review the provided email content thoroughly.\n2. Use the following rules to assign the correct category:\n   - **product_enquiry**: When the email seeks information about a product feature, benefit, service, or pricing.\n   - **customer_complaint**: When the email communicates dissatisfaction or a complaint.\n   - **customer_feedback**: When the email provides feedback or suggestions regarding a product or service.\n   - **unrelated**: When the email content does not match any of the above categories.\n\n# **EMAIL CONTENT:**\n{email}\n\n# **Notes:**\n\n* Base your categorization strictly on the email content provided; avoid making assumptions or overgeneralizing.\n<\/span><span class=\"sh\">\"\"\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0645\u0627 \u0627\u06cc\u0646 \u0639\u0627\u0645\u0644 \u0631\u0627 \u062f\u0631 <code>categorize_email<\/code> \u06af\u0631\u0647 \u06af\u0631\u0627\u0641 \u0645\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">categorize_email<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Categorizes the current email using the categorize_email agent.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"c1\"># Get the last email\n<\/span>    <span class=\"n\">current_email<\/span> <span class=\"o\">=<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">emails<\/span><span class=\"sh\">\"<\/span><span class=\"p\">][<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n    <span class=\"n\">result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">agents<\/span><span class=\"p\">.<\/span><span class=\"n\">categorize_email<\/span><span class=\"p\">.<\/span><span class=\"nf\">invoke<\/span><span class=\"p\">({<\/span><span class=\"sh\">\"<\/span><span class=\"s\">email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">current_email<\/span><span class=\"p\">.<\/span><span class=\"n\">body<\/span><span class=\"p\">})<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Email category: <\/span><span class=\"si\">{<\/span><span class=\"n\">result<\/span><span class=\"p\">.<\/span><span class=\"n\">category<\/span><span class=\"p\">.<\/span><span class=\"n\">value<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">email_category<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">result<\/span><span class=\"p\">.<\/span><span class=\"n\">category<\/span><span class=\"p\">.<\/span><span class=\"n\">value<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">current_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">current_email<\/span>\n    <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D9%BE%D8%A7%D8%B3%D8%AE\"><\/span>\n<p>  <strong>3. \u062a\u0648\u0644\u06cc\u062f \u067e\u0627\u0633\u062e<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0633\u062a\u0647 \u0628\u0647 \u062f\u0633\u062a\u0647 \u0627\u06cc\u0645\u06cc\u0644\u060c \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A7%D9%84%D9%81_%D8%B4%DA%A9%D8%A7%DB%8C%D8%A7%D8%AA_%D9%88_%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D8%AF%D8%A7%D8%AA\"><\/span>\n<p>  <strong>\u0627\u0644\u0641 \u0634\u06a9\u0627\u06cc\u0627\u062a \u0648 \u0627\u0646\u062a\u0642\u0627\u062f\u0627\u062a:<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0634\u06a9\u0627\u06cc\u0627\u062a \u06cc\u0627 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f\u060c <strong>\u0639\u0627\u0645\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0638\u06cc\u0641\u0647 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0627\u0633\u062e \u0634\u062e\u0635\u06cc \u0631\u0627 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 <strong>\u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647<\/strong> \u0628\u0647 \u0627\u0648 \u062f\u0633\u062a\u0648\u0631 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0647\u0645\u062f\u0644\u060c \u062d\u0631\u0641\u0647 \u0627\u06cc \u0628\u0627\u0634\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u062f \u06a9\u0647 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc\u0634 \u0628\u0627 \u0635\u062f\u0627\u06cc \u0628\u0631\u0646\u062f \u0622\u0698\u0627\u0646\u0633 \u0647\u0645\u0627\u0647\u0646\u06af \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">EMAIL_WRITER_PROMPT<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n# **Role:**  \n\nYou are a professional email writer working as part of the customer support team at a SaaS company specializing in AI agent development. Your role is to draft thoughtful and friendly emails that effectively address customer queries based on the given category and relevant information.  \n\n# **Tasks:**  \n\n1. Use the provided email category, subject, content, and additional information to craft a professional and helpful response.  \n2. Ensure the tone matches the email category, showing empathy, professionalism, and clarity.  \n3. Write the email in a structured, polite, and engaging manner that addresses the customer\u2019s needs.  \n<\/span><span class=\"gp\">\n...<\/span>\n\n<span class=\"s\">Write the email in the following format:  \n   Dear [Customer Name],  \n\n   [Email body responding to the query, based on the category and information provided.]  \n\n   Best regards,  \n   The Agentia Team    \n   - Replace `[Customer Name]` with \u201cCustomer\u201d if no name is provided.  \n   - Ensure the email is friendly, concise, and matches the tone of the category.  \n\n3. If a feedback is provided, use it to improve the email while ensuring it still aligns with the predefined guidelines.  \n\n# **Notes:**  \n\n* Return only the final email without any additional explanation or preamble.  \n* Always maintain a professional and empathetic tone that aligns with the context of the email.  \n* If the information provided is insufficient, politely request additional details from the customer.  \n* Make sure to follow any feedback provided when crafting the email.  \n<\/span><span class=\"sh\">\"\"\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 <code>write_draft_email<\/code> \u062a\u0627\u0628\u0639 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0639\u0644\u0627\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">write_draft_email<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Writes a draft email based on the current email and retrieved information.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"c1\"># Get messages history for current email\n<\/span>    <span class=\"n\">writer_messages<\/span> <span class=\"o\">=<\/span> <span class=\"n\">state<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">writer_messages<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">[])<\/span>\n\n    <span class=\"c1\"># Write email\n<\/span>    <span class=\"n\">draft_result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">agents<\/span><span class=\"p\">.<\/span><span class=\"n\">email_writer<\/span><span class=\"p\">.<\/span><span class=\"nf\">invoke<\/span><span class=\"p\">({<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">email_category<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">email_category<\/span><span class=\"sh\">\"<\/span><span class=\"p\">],<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">email_content<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">current_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"n\">body<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">retrieved_documents<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">retrieved_documents<\/span><span class=\"sh\">\"<\/span><span class=\"p\">],<\/span> <span class=\"c1\"># Empty for feedback or complaint\n<\/span>        <span class=\"sh\">\"<\/span><span class=\"s\">history<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">writer_messages<\/span>\n    <span class=\"p\">})<\/span>\n    <span class=\"n\">email<\/span> <span class=\"o\">=<\/span> <span class=\"n\">draft_result<\/span><span class=\"p\">.<\/span><span class=\"n\">email<\/span>\n    <span class=\"n\">trials<\/span> <span class=\"o\">=<\/span> <span class=\"n\">state<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">trials<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span>\n\n    <span class=\"c1\"># Append writer's draft to the message list\n<\/span>    <span class=\"n\">writer_messages<\/span><span class=\"p\">.<\/span><span class=\"nf\">append<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">**Draft <\/span><span class=\"si\">{<\/span><span class=\"n\">trials<\/span><span class=\"si\">}<\/span><span class=\"s\">:**<\/span><span class=\"se\">\\n<\/span><span class=\"si\">{<\/span><span class=\"n\">email<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">generated_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">email<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">trials<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">trials<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">writer_messages<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">writer_messages<\/span>\n    <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u067e\u06cc\u0627\u0645 \u0639\u0627\u0645\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0627 \u067e\u06cc\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 (<code>writer_messages<\/code>) \u0648 \u062a\u0639\u062f\u0627\u062f \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u062a\u0647\u06cc\u0647 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633 (<code>trials<\/code>) \u0628\u0647 \u062f\u0644\u0627\u06cc\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0642\u0633\u0645\u062a \u0628\u0639\u062f\u06cc \u0645\u0634\u062e\u0635 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A8_%D8%A7%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85_%D9%85%D8%AD%D8%B5%D9%88%D9%84\"><\/span>\n<p>  <strong>\u0628 \u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u0645\u062d\u0635\u0648\u0644:<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc <strong>\u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u062d\u0635\u0648\u0644<\/strong>\u060c \u0633\u06cc\u0633\u062a\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f <strong>RAG<\/strong> \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0648 \u062f\u0642\u06cc\u0642.<\/p>\n<p><strong>1. \u0633\u0627\u062e\u062a \u067e\u0631\u0633 \u0648 \u062c\u0648:<\/strong> \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u0634\u062a\u0631\u06cc \u0628\u0647 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u062e\u0627\u0635 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u062f\u0627\u062e\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0639\u0644\u0627\u0646 \u0632\u06cc\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">GENERATE_RAG_QUERIES_PROMPT<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n# **Role:**\n\nYou are an expert at analyzing customer emails to extract their intent and construct the most relevant queries for internal knowledge sources.\n\n# **Context:**\n\nYou will be given the text of an email from a customer. This email represents their specific query or concern. Your goal is to interpret their request and generate precise questions that capture the essence of their inquiry.\n\n# **Instructions:**\n\n1. Carefully read and analyze the email content provided.\n2. Identify the main intent or problem expressed in the email.\n3. Construct up to three concise, relevant questions that best represent the customer\u2019s intent or information needs.\n4. Include only relevant questions. Do not exceed three questions.\n5. If a single question suffices, provide only that.\n\n# **EMAIL CONTENT:**\n{email}\n\n# **Notes:**\n\n* Focus exclusively on the email content to generate the questions; do not include unrelated or speculative information.\n* Ensure the questions are specific and actionable for retrieving the most relevant answer.\n* Use clear and professional language in your queries.\n<\/span><span class=\"sh\">\"\"\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06af\u0631\u0647 <code>construct_rag_queries<\/code> \u0627\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u0646\u0627\u0645\u062f <strong>\u0645\u0646 \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062f\u0627\u0631\u0645<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0631\u0633 \u0648 \u062c\u0648:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">construct_rag_queries<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Constructs RAG queries based on the email content.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"n\">email_content<\/span> <span class=\"o\">=<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">current_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"n\">body<\/span>\n    <span class=\"n\">query_result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">agents<\/span><span class=\"p\">.<\/span><span class=\"n\">design_rag_queries<\/span><span class=\"p\">.<\/span><span class=\"nf\">invoke<\/span><span class=\"p\">({<\/span><span class=\"sh\">\"<\/span><span class=\"s\">email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">email_content<\/span><span class=\"p\">})<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">rag_queries<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">query_result<\/span><span class=\"p\">.<\/span><span class=\"n\">queries<\/span><span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>2. \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648 \u062a\u0648\u0644\u06cc\u062f \u067e\u0627\u0633\u062e:<\/strong><\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c RAG \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0631\u0633\u0634\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u062a\u062e\u0635\u0635 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f <strong>\u0639\u0627\u0645\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc QA<\/strong>\u060c \u06a9\u0647 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0631\u0627 \u0628\u0647 \u0647\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062a\u0631\u06a9\u06cc\u0628 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">GENERATE_RAG_ANSWER_PROMPT<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n# **Role:**\n\nYou are a highly knowledgeable and helpful assistant specializing in question-answering tasks.\n\n# **Context:**\n\nYou will be provided with pieces of retrieved context relevant to the user<\/span><span class=\"sh\">'<\/span><span class=\"s\">s question. This context is your sole source of information for answering.\n\n# **Instructions:**\n\n1. Carefully read the question and the provided context.\n2. Analyze the context to identify relevant information that directly addresses the question.\n3. Formulate a clear and precise response based only on the context. Do not infer or assume information that is not explicitly stated.\n4. If the context does not contain sufficient information to answer the question, respond with: <\/span><span class=\"sh\">\"<\/span><span class=\"s\">I don<\/span><span class=\"sh\">'<\/span><span class=\"s\">t know.<\/span><span class=\"sh\">\"<\/span><span class=\"s\">\n5. Use simple, professional language that is easy for users to understand.\n\n# **Question:**\n{question}\n\n# **Context:**\n{context}\n\n# **Notes:**\n\n* Stay within the boundaries of the provided context; avoid introducing external information.\n* If multiple pieces of context are relevant, synthesize them into a cohesive and accurate response.\n* Prioritize user clarity and ensure your answers directly address the question without unnecessary elaboration.\n<\/span><span class=\"sh\">\"\"\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>retrieve_from_rag<\/code> \u06af\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u067e\u0627\u0633\u062e \u0647\u0627 \u0631\u0627 \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">retrieve_from_rag<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Retrieves information from internal knowledge based on RAG questions.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"n\">final_answer<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">query<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">rag_queries<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]:<\/span>\n        <span class=\"n\">rag_result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">agents<\/span><span class=\"p\">.<\/span><span class=\"n\">generate_rag_answer<\/span><span class=\"p\">.<\/span><span class=\"nf\">invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">query<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">final_answer<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">query<\/span> <span class=\"o\">+<\/span> <span class=\"sh\">\"<\/span><span class=\"se\">\\n<\/span><span class=\"sh\">\"<\/span> <span class=\"o\">+<\/span> <span class=\"n\">rag_result<\/span> <span class=\"o\">+<\/span> <span class=\"sh\">\"<\/span><span class=\"se\">\\n\\n<\/span><span class=\"sh\">\"<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">retrieved_documents<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">final_answer<\/span><span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0647 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627 \u0628\u0627 \u067e\u0627\u0633\u062e \u0645\u0631\u0628\u0648\u0637\u0647 \u062e\u0648\u062f \u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f <code>retrieved_documents<\/code> \u06a9\u0647 \u0633\u067e\u0633 \u062a\u0648\u0633\u0637 <strong>\u0639\u0627\u0645\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u0633\u062e \u0627\u06cc\u0645\u06cc\u0644 \u0646\u0647\u0627\u06cc\u06cc\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u062c\u0627\u0645\u0639 \u0648 \u062f\u0642\u06cc\u0642 \u0628\u0648\u062f\u0646 \u0622\u0646.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_%D8%AA%D8%B6%D9%85%DB%8C%D9%86_%DA%A9%DB%8C%D9%81%DB%8C%D8%AA_%D9%85%D8%B7%D9%85%D8%A6%D9%86_%D8%B4%D9%88%DB%8C%D8%AF_%DA%A9%D9%87_%D8%A7%DB%8C%D9%85%DB%8C%D9%84_%D9%87%D8%A7_%D8%B9%D8%A7%D9%84%DB%8C_%D9%87%D8%B3%D8%AA%D9%86%D8%AF\"><\/span>\n<p>  <strong>4. \u062a\u0636\u0645\u06cc\u0646 \u06a9\u06cc\u0641\u06cc\u062a: \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0631 \u0627\u06cc\u0645\u06cc\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f\u060c \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062a\u0635\u062d\u06cc\u062d \u06a9\u0646\u0646\u062f\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0631\u0631\u0633\u06cc \u06a9\u06cc\u0641\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0622\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f. \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0647\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u0633\u062a\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f <strong>\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc<\/strong>\u060c <strong>\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u0634\u062a\u0631\u06cc<\/strong>\u0648 \u06cc\u06a9 \u062d\u0631\u0641\u0647 \u0627\u06cc\u060c <strong>\u0644\u062d\u0646 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 \u0628\u0631\u0646\u062f<\/strong><\/p>\n<p>\u0627\u06cc\u0646 <strong>\u0639\u0627\u0645\u0644 \u062a\u0635\u062d\u06cc\u062d \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0648\u0638\u0627\u06cc\u0641 \u062e\u0648\u062f \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">EMAIL_PROOFREADER_PROMPT<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"\"<\/span><span class=\"s\">\n# **Role:**\n\nYou are an expert email proofreader working for the customer support team at a SaaS company specializing in AI agent development. Your role is to analyze and assess replies generated by the writer agent to ensure they accurately address the customer<\/span><span class=\"sh\">'<\/span><span class=\"s\">s inquiry, adhere to the company<\/span><span class=\"sh\">'<\/span><span class=\"s\">s tone and writing standards, and meet professional quality expectations.\n\n# **Context:**\n\nYou are provided with the **initial email** content written by the customer and the **generated email** crafted by the our writer agent.\n\n# **Instructions:**\n\n1. Analyze the generated email for:\n   - **Accuracy**: Does it appropriately address the customer\u2019s inquiry based on the initial email and information provided?\n   - **Tone and Style**: Does it align with the company\u2019s tone, standards, and writing style?\n   - **Quality**: Is it clear, concise, and professional?\n2. Determine if the email is:\n   - **Sendable**: The email meets all criteria and is ready to be sent.\n   - **Not Sendable**: The email contains significant issues requiring a rewrite.\n3. Only judge the email as <\/span><span class=\"sh\">\"<\/span><span class=\"s\">not sendable<\/span><span class=\"sh\">\"<\/span><span class=\"s\"> (`send: false`) if lacks information or inversely contains irrelevant ones that would negatively impact customer satisfaction or professionalism.\n4. Provide actionable and clear feedback for the writer agent if the email is deemed <\/span><span class=\"sh\">\"<\/span><span class=\"s\">not sendable.<\/span><span class=\"sh\">\"<\/span><span class=\"s\">\n\n---\n\n# **INITIAL EMAIL:**\n{initial_email}\n\n# **GENERATED REPLY:**\n{generated_email}\n\n---\n\n# **Notes:**\n\n* Be objective and fair in your assessment. Only reject the email if necessary.\n* Ensure feedback is clear, concise, and actionable.\n<\/span><span class=\"sh\">\"\"\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>verify_generated_email<\/code> \u06af\u0631\u0647 \u0631\u0627 \u0641\u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u062f <strong>\u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062a\u0635\u062d\u06cc\u062d<\/strong> \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0645\u06cc\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">verify_generated_email<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Verifies the generated email using the proofreader agent.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">Fore<\/span><span class=\"p\">.<\/span><span class=\"n\">YELLOW<\/span> <span class=\"o\">+<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Verifying generated email...<\/span><span class=\"se\">\\n<\/span><span class=\"sh\">\"<\/span> <span class=\"o\">+<\/span> <span class=\"n\">Style<\/span><span class=\"p\">.<\/span><span class=\"n\">RESET_ALL<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">review<\/span> <span class=\"o\">=<\/span> <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">agents<\/span><span class=\"p\">.<\/span><span class=\"n\">email_proofreader<\/span><span class=\"p\">.<\/span><span class=\"nf\">invoke<\/span><span class=\"p\">({<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">initial_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">current_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"n\">body<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">generated_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">generated_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">],<\/span>\n    <span class=\"p\">})<\/span>\n\n    <span class=\"c1\"># Store feedback if email is not good\n<\/span>    <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"n\">review<\/span><span class=\"p\">.<\/span><span class=\"n\">send<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">writer_messages<\/span> <span class=\"o\">=<\/span> <span class=\"n\">state<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">writer_messages<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">[])<\/span>\n        <span class=\"n\">writer_messages<\/span><span class=\"p\">.<\/span><span class=\"nf\">append<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">**Proofreader Feedback:**<\/span><span class=\"se\">\\n<\/span><span class=\"si\">{<\/span><span class=\"n\">review<\/span><span class=\"p\">.<\/span><span class=\"n\">feedback<\/span><span class=\"si\">}<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">sendable<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">review<\/span><span class=\"p\">.<\/span><span class=\"n\">send<\/span><span class=\"p\">,<\/span>\n        <span class=\"sh\">\"<\/span><span class=\"s\">writer_messages<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">writer_messages<\/span>\n    <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u0622\u0646 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/strong> \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0647\u0645 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0645\u0634\u062a\u0631\u06cc \u0648 \u0647\u0645 \u067e\u0627\u0633\u062e \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633 \u0634\u062f\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f <strong>\u0639\u0627\u0645\u0644 \u062a\u0635\u062d\u06cc\u062d \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong>\u060c \u06a9\u0647 \u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f (<code>sendable: True<\/code>) \u06cc\u0627 \u0622\u0646 \u0631\u0627 \u0631\u062f \u0645\u06cc \u06a9\u0646\u062f (<code>sendable: False<\/code>) \u0628\u0627 \u0628\u0627\u0632\u062e\u0648\u0631\u062f. \u0627\u06af\u0631 \u0631\u062f \u0634\u062f\u060c \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u062f\u0631 \u0622\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f <code>writer_messages<\/code> \u0644\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f \u062a\u0627 <strong>\u0639\u0627\u0645\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong> \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u067e\u0627\u0633\u062e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u06af\u06cc\u0631 \u0627\u0641\u062a\u0627\u062f\u0646 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0631 \u06cc\u06a9 \u062d\u0644\u0642\u0647 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a (\u06a9\u0647 \u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e \u0628\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u0646\u0634 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u062a\u0641\u0627\u0642 \u0628\u06cc\u0641\u062a\u062f)\u060c \u0641\u0642\u0637 \u0633\u0647 \u0628\u0627\u0631 \u0622\u0646 \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc \u06a9\u0646\u06cc\u0645 (<code>trials = 3<\/code>) \u0628\u0631\u0627\u06cc \u062f\u0631\u0633\u062a \u06a9\u0631\u062f\u0646 \u0622\u0646. \u0627\u06af\u0631 \u0628\u0639\u062f \u0627\u0632 \u0633\u0647 \u0628\u0627\u0631 \u062a\u0644\u0627\u0634 \u0628\u0627\u0632 \u0647\u0645 \u0646\u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0639\u0644\u0627\u0645\u062a \u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06cc\u06a9 \u0627\u0646\u0633\u0627\u0646 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644\u06cc \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u0628\u0627\u0644\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"5_%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%A7%DB%8C%D9%85%DB%8C%D9%84\"><\/span>\n<p>  <strong>5. \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0645\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u062a\u0645\u0627\u0645 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627\u06cc \u06a9\u06cc\u0641\u06cc \u0631\u0627 \u06af\u0630\u0631\u0627\u0646\u062f\u060c \u0622\u0645\u0627\u062f\u0647 \u0627\u0631\u0633\u0627\u0644 \u0627\u0633\u062a. \u0633\u06cc\u0633\u062a\u0645 \u0627\u0632 <strong>Gmail API<\/strong> \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u0627\u0633\u062e \u0646\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc.<\/p>\n<p>\u062f\u0648 \u06af\u0632\u06cc\u0646\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a\u060c \u0627\u0648\u0644\u06cc \u0628\u0647 <strong>\u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">create_draft_response<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Creates a draft response in Gmail.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">Fore<\/span><span class=\"p\">.<\/span><span class=\"n\">YELLOW<\/span> <span class=\"o\">+<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Creating draft email...<\/span><span class=\"se\">\\n<\/span><span class=\"sh\">\"<\/span> <span class=\"o\">+<\/span> <span class=\"n\">Style<\/span><span class=\"p\">.<\/span><span class=\"n\">RESET_ALL<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">gmail_tools<\/span><span class=\"p\">.<\/span><span class=\"nf\">create_draft_reply<\/span><span class=\"p\">(<\/span><span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">current_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">],<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">generated_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">])<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">retrieved_documents<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">trials<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0648\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <strong>\u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/strong>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">send_email_response<\/span><span class=\"p\">(<\/span><span class=\"n\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">state<\/span><span class=\"p\">:<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">GraphState<\/span><span class=\"p\">:<\/span>\n    <span class=\"sh\">\"\"\"<\/span><span class=\"s\">Sends the email response directly using Gmail.<\/span><span class=\"sh\">\"\"\"<\/span>\n    <span class=\"nf\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">Fore<\/span><span class=\"p\">.<\/span><span class=\"n\">YELLOW<\/span> <span class=\"o\">+<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">Sending email...<\/span><span class=\"se\">\\n<\/span><span class=\"sh\">\"<\/span> <span class=\"o\">+<\/span> <span class=\"n\">Style<\/span><span class=\"p\">.<\/span><span class=\"n\">RESET_ALL<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">gmail_tools<\/span><span class=\"p\">.<\/span><span class=\"nf\">send_reply<\/span><span class=\"p\">(<\/span><span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">current_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">],<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">generated_email<\/span><span class=\"sh\">\"<\/span><span class=\"p\">])<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span><span class=\"sh\">\"<\/span><span class=\"s\">retrieved_documents<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">trials<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0628\u0639\u062f \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc \u0627\u0641\u062a\u062f\u061f<\/strong><\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0645\u06cc\u0644 \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633\u060c \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u0632 \u0645\u06cc \u06af\u0631\u062f\u062f \u062a\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0648\u0646\u062f \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0628\u0647 \u0633\u0631\u0639\u062a \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0635\u0646\u062f\u0648\u0642 \u0648\u0631\u0648\u062f\u06cc \u062e\u0627\u0644\u06cc \u0634\u0648\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B2%D8%A7%DB%8C%D8%A7_%D9%88_%D8%AA%D8%A7%D8%AB%DB%8C%D8%B1\"><\/span>\n<p>  <strong>\u0645\u0632\u0627\u06cc\u0627 \u0648 \u062a\u0627\u062b\u06cc\u0631<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<p><strong>\u0628\u0647\u0628\u0648\u062f \u062a\u062c\u0631\u0628\u0647 \u0645\u0634\u062a\u0631\u06cc:<\/strong> \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0645\u062a\u0646\u0627\u0633\u0628\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0627\u062d\u0633\u0627\u0633 \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0641\u0632\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0627\u06cc\u06cc:<\/strong> \u0628\u0647 \u0637\u0648\u0631 \u0686\u0634\u0645\u06af\u06cc\u0631\u06cc \u0632\u0645\u0627\u0646 \u0635\u0631\u0641 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0628\u0647\u0631\u0647 \u0648\u0631\u06cc \u062a\u06cc\u0645:<\/strong> \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0648\u0638\u0627\u06cc\u0641 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0648 \u0627\u0628\u062a\u06a9\u0627\u0631\u0627\u062a \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc\u06a9 \u0622\u0632\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u062f\u0642\u062a \u062a\u0636\u0645\u06cc\u0646 \u0634\u062f\u0647:<\/strong> RAG \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u067e\u0627\u0633\u062e\u06cc \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C_%D8%AF%D8%B1_%D8%AF%D9%86%DB%8C%D8%A7%DB%8C_%D9%88%D8%A7%D9%82%D8%B9%DB%8C\"><\/span>\n<p>  <strong>\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 <strong>\u0633\u06cc\u0633\u062a\u0645 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644<\/strong> \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0628\u0631\u0627\u06cc \u0635\u0646\u0627\u06cc\u0639 \u0645\u062e\u062a\u0644\u0641 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ul>\n<li>\n<p><strong>\u0622\u0698\u0627\u0646\u0633 \u0647\u0627\u06cc \u0628\u0627\u0632\u0627\u0631\u06cc\u0627\u0628\u06cc:<\/strong> \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06af\u0632\u0627\u0631\u0634\u200c\u062f\u0647\u06cc \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0647 \u0633\u0624\u0627\u0644\u0627\u062a \u0633\u0631\u06cc\u0639 \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0628\u0647 \u062a\u06cc\u0645\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0648\u06cc \u06a9\u0627\u0631 \u062e\u0644\u0627\u0642\u0627\u0646\u0647 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9:<\/strong> \u0628\u0647 \u0633\u0624\u0627\u0644\u0627\u062a \u0645\u062d\u0635\u0648\u0644 \u067e\u0627\u0633\u062e \u0645\u06cc \u062f\u0647\u062f\u060c \u0628\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0633\u0641\u0627\u0631\u0634 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0648 \u0628\u0631\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0645\u0634\u062a\u0631\u06cc \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0634\u0631\u06a9\u062a \u0647\u0627\u06cc \u0641\u0646\u06cc:<\/strong> \u0628\u0647 \u0645\u0633\u0627\u0626\u0644 \u0641\u0646\u06cc \u0631\u0627\u06cc\u062c \u067e\u0627\u0633\u062e \u0645\u06cc \u062f\u0647\u062f\u060c \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0628\u062a\u0627 \u0631\u0627 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u062d\u0635\u06cc\u0644\u0627\u062a:<\/strong> \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u0627\u0646 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0622\u0646\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062b\u0628\u062a \u0646\u0627\u0645 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0648\u0638\u0627\u06cc\u0641 \u0627\u062f\u0627\u0631\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631 \u0627\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u062f \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0624\u062b\u0631\u062a\u0631\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f\u060c \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  <strong>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 <strong>\u0633\u06cc\u0633\u062a\u0645 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc<\/strong>\u060c \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <strong>LangChain<\/strong> \u0648 <strong>\u0644\u0627\u0646\u06af \u06af\u0631\u0627\u0641<\/strong>\u060c \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong>RAG<\/strong>\u060c \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u063a\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc \u062e\u0648\u062f \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0645\u06cc\u0644\u060c \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f <strong>\u0632\u0645\u0627\u0646 \u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u0633\u0631\u06cc\u0639 \u062a\u0631\u060c \u0631\u0636\u0627\u06cc\u062a \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0645\u06cc \u0628\u062e\u0634\u062f \u0648 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f<\/strong>.<\/p>\n<p>\ud83c\udfaf <strong>\u0622\u06cc\u0627 \u0622\u0645\u0627\u062f\u0647 \u0627\u06cc\u062f \u062a\u0627 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0645\u0634\u062a\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0645\u062a\u062d\u0648\u0644 \u06a9\u0646\u06cc\u062f\u061f<\/strong> \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0645\u0644 \u0631\u0627 \u062f\u0631 GitHub \u0645\u0646 \u0648 <strong>\u06a9\u0634\u0641 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0633\u0628 \u0648 \u06a9\u0627\u0631 \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f!<\/strong><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0639\u0635\u0631 \u0631\u0636\u0627\u06cc\u062a \u0641\u0648\u0631\u06cc\u060c \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc \u062f\u06cc\u06af\u0631 \u06cc\u06a9 \u0628\u062e\u0634 \u0646\u06cc\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u06a9\u0644 \u0634\u0631\u06a9\u062a \u0627\u0633\u062a. \u0622\u06cc\u0627 \u0645\u06cc\u200c\u062f\u0627\u0646\u0633\u062a\u06cc\u062f \u06a9\u0647 86 \u062f\u0631\u0635\u062f \u0627\u0632 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u062a\u0646\u0647\u0627 \u067e\u0633 \u0627\u0632 \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u0628\u062f \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u0646\u062f\u061f \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0633\u0646\u062a\u06cc \u063a\u0631\u0642 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0641\u200c\u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0628\u06cc\u200c\u067e\u0627\u06cc\u0627\u0646 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0627\u0645\u0627 \u0628\u0627\u0632\u06cc \u062f\u0631 \u062d\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0633\u062a. \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0632\u0628\u0627\u0646 \u0628\u0632\u0631\u06af (LLM) \u0648 \u0639\u0648\u0627\u0645\u0644 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":91421,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-91420","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/91420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=91420"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/91420\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/91421"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=91420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=91420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=91420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}