{"id":123,"date":"2023-05-02T03:34:05","date_gmt":"2023-05-02T03:34:05","guid":{"rendered":"https:\/\/vulab.com\/?p=123"},"modified":"2023-05-02T03:34:05","modified_gmt":"2023-05-02T03:34:05","slug":"fine-tuning-llm-with-langchain","status":"publish","type":"post","link":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/","title":{"rendered":"Fine tuning LLM with Langchain"},"content":{"rendered":"\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<p>import os<br>from pprint import pprint<br>from langchain.embeddings.openai import OpenAIEmbeddings<br>from langchain.vectorstores import Chroma<br>from langchain.text_splitter import TokenTextSplitter<br>from langchain.llms import OpenAI<br>from langchain.chains import ChatVectorDBChain<br>from langchain.document_loaders import UnstructuredURLLoader<\/p>\n\n\n\n<p>os.environ[&#8220;OPENAI_API_KEY&#8221;] = &#8216;your_open_api_key&#8217;<\/p>\n\n\n\n<p>h2o_ai_wave_urls = [<br>&#8220;https:\/\/github.com\/h2oai\/wave\/releases&#8221;,<br>&#8220;https:\/\/wave.h2o.ai\/docs\/installation&#8221;,<br>&#8220;https:\/\/wave.h2o.ai\/docs\/getting-started&#8221;,<br>&#8220;https:\/\/wave.h2o.ai\/docs\/examples&#8221;,<br>&#8220;https:\/\/github.com\/h2oai\/wave\/issues\/693&#8221;,<br>&#8220;https:\/\/github.com\/h2oai\/wave\/blob\/master\/.github\/CONTRIBUTING.md#development-setup&#8221;,<br>&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1897&#8221;,<br>&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1888&#8221;,<br>&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1885&#8221;,<br>&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1865&#8221;<br>]<\/p>\n\n\n\n<p>collection_name = &#8220;h2o_wave_knowledgebase&#8221;<br>local_directory = &#8220;kb-h2o-wave&#8221;<br>persist_directory = os.path.join(os.getcwd(), local_directory)<\/p>\n\n\n\n<p>loader = UnstructuredURLLoader(urls=h2o_ai_wave_urls)<br>kb_data = loader.load()<\/p>\n\n\n\n<p>text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)<br>kb_doc = text_splitter.split_documents(kb_data)<\/p>\n\n\n\n<p>embeddings = OpenAIEmbeddings()<\/p>\n\n\n\n<p>kb_db = Chroma.from_documents(kb_doc,<br>embeddings,<br>collection_name=collection_name,<br>persist_directory=persist_directory<br>)<br>kb_db.persist()<\/p>\n\n\n\n<p>kb_qa = ChatVectorDBChain.from_llm(<br>OpenAI(temperature=0, model_name=&#8221;gpt-3.5-turbo&#8221;),<br>vectorstore=kb_db,<br>top_k_docs_for_context=5,<br>return_source_documents=True<br>)<\/p>\n\n\n\n<p>chat_history = []<br>query_statement = &#8220;What is this document about?&#8221;<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">&#8212;&#8212; One question ONLY &#8212;&#8212;<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">query_results = kb_qa({&#8220;question&#8221;: query_statement, &#8220;chat_history&#8221;: chat_history})<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">pprint(query_results[&#8216;answer&#8217;])<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">pprint(query_results[&#8216;source_documents&#8217;])<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">&#8212;&#8212; Question Loop &#8212;&#8212;<\/h1>\n\n\n\n<p>while query_statement != &#8216;exit&#8217;:<br>query_statement = input(&#8216;Enter your question here: &gt; &#8216;)<br>if query_statement != exit:<br>result = kb_qa({&#8220;question&#8221;: query_statement, &#8220;chat_history&#8221;: chat_history})<br># pprint(result[&#8220;source_documents&#8221;])<br>pprint(result[&#8220;answer&#8221;])<\/p>\n\n\n\n<p>os.environ[&#8220;OPENAI_API_KEY&#8221;] = &#8221;<br>print(&#8220;&#8212;&#8212;&#8212;- Life is good &#8212;&#8212;&#8212;&#8212;&#8212;-&#8220;)<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>import osfrom pprint import pprintfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.text_splitter import TokenTextSplitterfrom langchain.llms import OpenAIfrom langchain.chains import ChatVectorDBChainfrom langchain.document_loaders import UnstructuredURLLoader os.environ[&#8220;OPENAI_API_KEY&#8221;] = &#8216;your_open_api_key&#8217; h2o_ai_wave_urls = [&#8220;https:\/\/github.com\/h2oai\/wave\/releases&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/installation&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/getting-started&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/examples&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/issues\/693&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/blob\/master\/.github\/CONTRIBUTING.md#development-setup&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1897&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1888&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1885&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1865&#8221;] collection_name = &#8220;h2o_wave_knowledgebase&#8221;local_directory = &#8220;kb-h2o-wave&#8221;persist_directory = os.path.join(os.getcwd(), local_directory) loader = UnstructuredURLLoader(urls=h2o_ai_wave_urls)kb_data = loader.load() text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)kb_doc = text_splitter.split_documents(kb_data) embeddings = OpenAIEmbeddings() kb_db = Chroma.from_documents(kb_doc,embeddings,collection_name=collection_name,persist_directory=persist_directory)kb_db.persist() kb_qa &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/\"> <span class=\"screen-reader-text\">Fine tuning LLM with Langchain<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-123","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fine tuning LLM with Langchain -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fine tuning LLM with Langchain -\" \/>\n<meta property=\"og:description\" content=\"import osfrom pprint import pprintfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.text_splitter import TokenTextSplitterfrom langchain.llms import OpenAIfrom langchain.chains import ChatVectorDBChainfrom langchain.document_loaders import UnstructuredURLLoader os.environ[&#8220;OPENAI_API_KEY&#8221;] = &#8216;your_open_api_key&#8217; h2o_ai_wave_urls = [&#8220;https:\/\/github.com\/h2oai\/wave\/releases&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/installation&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/getting-started&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/examples&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/issues\/693&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/blob\/master\/.github\/CONTRIBUTING.md#development-setup&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1897&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1888&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1885&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1865&#8221;] collection_name = &#8220;h2o_wave_knowledgebase&#8221;local_directory = &#8220;kb-h2o-wave&#8221;persist_directory = os.path.join(os.getcwd(), local_directory) loader = UnstructuredURLLoader(urls=h2o_ai_wave_urls)kb_data = loader.load() text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)kb_doc = text_splitter.split_documents(kb_data) embeddings = OpenAIEmbeddings() kb_db = Chroma.from_documents(kb_doc,embeddings,collection_name=collection_name,persist_directory=persist_directory)kb_db.persist() kb_qa &hellip; Fine tuning LLM with Langchain Read More &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-02T03:34:05+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/\",\"url\":\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/\",\"name\":\"Fine tuning LLM with Langchain -\",\"isPartOf\":{\"@id\":\"https:\/\/vulab.com\/#website\"},\"datePublished\":\"2023-05-02T03:34:05+00:00\",\"dateModified\":\"2023-05-02T03:34:05+00:00\",\"author\":{\"@id\":\"https:\/\/vulab.com\/#\/schema\/person\/20560f459fee0b370fcbf3e6d4c6a1ed\"},\"breadcrumb\":{\"@id\":\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vulab.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fine tuning LLM with Langchain\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vulab.com\/#website\",\"url\":\"https:\/\/vulab.com\/\",\"name\":\"\",\"description\":\"House of AI\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vulab.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/vulab.com\/#\/schema\/person\/20560f459fee0b370fcbf3e6d4c6a1ed\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/vulab.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2b89f6ea5d0e39e731c1f6895d169f84e505346e20122aeebfff277a7ff91182?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2b89f6ea5d0e39e731c1f6895d169f84e505346e20122aeebfff277a7ff91182?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/vulab.com\"],\"url\":\"https:\/\/vulab.com\/index.php\/author\/vulab_admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fine tuning LLM with Langchain -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/","og_locale":"en_US","og_type":"article","og_title":"Fine tuning LLM with Langchain -","og_description":"import osfrom pprint import pprintfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.text_splitter import TokenTextSplitterfrom langchain.llms import OpenAIfrom langchain.chains import ChatVectorDBChainfrom langchain.document_loaders import UnstructuredURLLoader os.environ[&#8220;OPENAI_API_KEY&#8221;] = &#8216;your_open_api_key&#8217; h2o_ai_wave_urls = [&#8220;https:\/\/github.com\/h2oai\/wave\/releases&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/installation&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/getting-started&#8221;,&#8220;https:\/\/wave.h2o.ai\/docs\/examples&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/issues\/693&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/blob\/master\/.github\/CONTRIBUTING.md#development-setup&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1897&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1888&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1885&#8221;,&#8220;https:\/\/github.com\/h2oai\/wave\/discussions\/1865&#8221;] collection_name = &#8220;h2o_wave_knowledgebase&#8221;local_directory = &#8220;kb-h2o-wave&#8221;persist_directory = os.path.join(os.getcwd(), local_directory) loader = UnstructuredURLLoader(urls=h2o_ai_wave_urls)kb_data = loader.load() text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)kb_doc = text_splitter.split_documents(kb_data) embeddings = OpenAIEmbeddings() kb_db = Chroma.from_documents(kb_doc,embeddings,collection_name=collection_name,persist_directory=persist_directory)kb_db.persist() kb_qa &hellip; Fine tuning LLM with Langchain Read More &raquo;","og_url":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/","article_published_time":"2023-05-02T03:34:05+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/","url":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/","name":"Fine tuning LLM with Langchain -","isPartOf":{"@id":"https:\/\/vulab.com\/#website"},"datePublished":"2023-05-02T03:34:05+00:00","dateModified":"2023-05-02T03:34:05+00:00","author":{"@id":"https:\/\/vulab.com\/#\/schema\/person\/20560f459fee0b370fcbf3e6d4c6a1ed"},"breadcrumb":{"@id":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vulab.com\/index.php\/2023\/05\/02\/fine-tuning-llm-with-langchain\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vulab.com\/"},{"@type":"ListItem","position":2,"name":"Fine tuning LLM with Langchain"}]},{"@type":"WebSite","@id":"https:\/\/vulab.com\/#website","url":"https:\/\/vulab.com\/","name":"","description":"House of AI","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vulab.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/vulab.com\/#\/schema\/person\/20560f459fee0b370fcbf3e6d4c6a1ed","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vulab.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2b89f6ea5d0e39e731c1f6895d169f84e505346e20122aeebfff277a7ff91182?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b89f6ea5d0e39e731c1f6895d169f84e505346e20122aeebfff277a7ff91182?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/vulab.com"],"url":"https:\/\/vulab.com\/index.php\/author\/vulab_admin\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/posts\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":1,"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":124,"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/posts\/123\/revisions\/124"}],"wp:attachment":[{"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/media?parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/categories?post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vulab.com\/index.php\/wp-json\/wp\/v2\/tags?post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}