langchain進階一:特殊的chain,輕松實現對話,與數據庫操作,抽取數據,以及基于本地知識庫的問答

特殊的chain

langchain中的Chain有很多,能夠輕松實現部分需求,極致簡化代碼,但是實現效果與模型智慧程度有關

會話鏈

效果與LLMChain大致相同

javascript
復制代碼
from langchain.chains import ConversationChain
from langchain_community.llms import OpenAI
conversation = ConversationChain(llm=OpenAI())

SQL鏈

顧名思義,跟數據庫有關,可以使用自然語言進行數據庫操作,他自動生成sql語句操作,并且進行歸納回答,速度比直接使用數據庫鏈接工具更慢,智慧程度低對的模型進行理解自然語言時出現偏差可能會把數據庫秒了.屬于待開發功能

ini
復制代碼# pip install -U langchain langchain-community langchain-openai
from langchain_openai import ChatOpenAI
from langchain.chains import create_sql_query_chain#查詢鏈
from langchain_community.utilities import SQLDatabase
db = SQLDatabase.from_uri("mysql+pymysql://{數據庫用戶名}:{密碼}@localhost/{數據庫名}")
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
chain = create_sql_query_chain(llm, db)
response = chain.invoke({"question": "這個數據庫中有多少數據"})
ini
復制代碼
#數據庫crud都能操作,但是可能會秒數據庫,在以后的版本可能會被移除
import os
from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
OPENAI_API_BASE=os.environ["OPENAI_API_BASE"] 
OPENAI_API_KEY=os.environ["OPENAI_API_KEY"]
os.environ["SERPAPI_API_KEY"]
from langchain_openai import ChatOpenAI
from langchain.utilities import SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain
from langchain.memory import ConversationBufferMemory
db = SQLDatabase.from_uri("mysql+pymysql://{數據庫用戶名}:{密碼}@localhost/{數據庫名}")
llm=ChatOpenAI(api_key=OPENAI_API_KEY,base_url=OPENAI_API_BASE,temperature=0)#擴散度置為0,回答更準確
memory = ConversationBufferMemory(memory_key="chat_history")
db_chain = SQLDatabaseChain(llm=llm,database=db, verbose=False,use_query_checker=True, memory=memory)
text="表中有那些字段"
res=db_chain.run(text)
print(res)

抽取鏈

將人的自然語言轉換成結構化語句,除了使用人力或者專門訓練的模型似乎沒有好的解決辦法langchain中有個內置的抽取鏈,能夠做到這件難事兒,實現抽取鏈有兩種方式

  1. 使用langchain的create_extraction_chain

使用langchain穩定版本中的抽取鏈

ini
復制代碼
import os
from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
OPENAI_API_BASE=os.environ["OPENAI_API_BASE"] 
OPENAI_API_KEY=os.environ["OPENAI_API_KEY"]
from langchain.chains import create_extraction_chain
from langchain_openai import ChatOpenAI
from langchain.prompts import (PromptTemplate,
)llm=ChatOpenAI(api_key=OPENAI_API_KEY,base_url=OPENAI_API_BASE,temperature=0)def extract(res:str):prompt = PromptTemplate(template="分析出\n{res}\n中的水果\n",#進行提示告訴它該怎么做input_variables=["res"],)# Schema定義結構化的數據模型schema = {"properties": {"reason": {"fruit": "string"},},"required": ["fruit"],}chain = create_extraction_chain(schema, llm, prompt,verbose=True)return chain.run(res)if __name__ == "__main__":res = "我喜歡吃蘋果,它讓我感到幸福"print(extract(res))
  1. 使用kor.extraction的create_extraction_chain

ini
復制代碼
#pip install kor
import os
from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
OPENAI_API_BASE=os.environ["OPENAI_API_BASE"] 
OPENAI_API_KEY=os.environ["OPENAI_API_KEY"] 
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.schema.prompt_template import BasePromptTemplate
from kor.extraction import create_extraction_chain# %% 信息抽取鏈 %%
from kor.nodes import Object, Text, Number #%% 節點類型 %%
import jsondef json_dump(json_object): json_formatted_str = json.dumps(json_object, indent=2, ensure_ascii=False) print(json_formatted_str)llm=ChatOpenAI(api_key=OPENAI_API_KEY,base_url=OPENAI_API_BASE,temperature=0)res_schema = Object(id="成績",description="關于成績的信息",# %%描述信息 %%attributes=[#%% 屬性text表示字符串字段,number表示數字字段 %%Text(id="name",description="這個人的名字."),Text(id="Results",description="關于這個人的成績."),Number(id="ranking",description="關于這個人的排名.")],examples=[# 給模型的樣本例子,將數據輸出成例子一樣的格式 ('''張山這次獲得第一名,他考了100分, 而李四獲得第五名,他考了80.''',[{"name": "張三", "Results": "100", "ranking": 1},{"name": "李四", "Results": "80", "ranking": 5},],)]
)
extraction_chain = create_extraction_chain(llm, res_schema)
text="王五比趙六多10分,趙六只考了60分排十名,趙六比他多三名"
output=extraction_chain.run(text)
json_dump(output)

根據使用,第三方的kor抽取效果要更好,但是會有警告,而且需要自己轉換數據類型,官方也沒有給出后續是否會移除這個kor

QA鏈

眾所周知,大語言模型知道很多東西,知識很有廣度,但我問他xx大學有什么選修課的時候,他可能就無法回答,如果他有這個大學的選修課知識庫,就能回答了,所以QA鏈就是基于某個知識庫進行問答的,這個知識庫可以是txt,pdf,或者mongoDB,但必須是一個文檔.

需要將文檔進行加載,使用text_splitter進行向量存儲,這里有一個向量數據庫的概念就不過多描述了,有興趣可以自行了解.

ini
復制代碼
import os
from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
OPENAI_API_BASE=os.environ["OPENAI_API_BASE"] 
OPENAI_API_KEY=os.environ["OPENAI_API_KEY"] from langchain_openai import ChatOpenAI,OpenAIEmbeddingsfrom langchain_community.document_loaders import PyMuPDFLoaderfrom langchain.chains.question_answering import load_qa_chain
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import ChromaPDF_NAME = 'xxx.pdf'##pdf的地址
docs = PyMuPDFLoader(PDF_NAME).load()##加載到docs中
#進行向量存儲
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
split_docs = text_splitter.split_documents(docs)embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(split_docs, embeddings, collection_name="serverless_guide")llm=ChatOpenAI(api_key=OPENAI_API_KEY,base_url=OPENAI_API_BASE,temperature=0)
chain = load_qa_chain(llm, chain_type="stuff",verbose=True)def search_recommend(human_input):query = human_inputsimilar_docs = vectorstore.similarity_search(query, 3)res=chain.run(input_documents=similar_docs, question=query)#run方法后續將換成invokereturn restext="簡單介紹一下主要內容"
res=search_recommend(text)
print(res)

langchain中還有更多其他的鏈,可在官方文檔中查看,最好是英文文檔,中文文檔更新速度很慢

如何系統的去學習大模型LLM ?

作為一名熱心腸的互聯網老兵,我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在人工智能學習中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。

但苦于知識傳播途徑有限,很多互聯網行業朋友無法獲得正確的資料得到學習提升,故此將并將重要的 AI大模型資料 包括AI大模型入門學習思維導圖、精品AI大模型學習書籍手冊、視頻教程、實戰學習等錄播視頻免費分享出來

😝有需要的小伙伴,可以V掃描下方二維碼免費領取🆓

在這里插入圖片描述

一、全套AGI大模型學習路線

AI大模型時代的學習之旅:從基礎到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型報告合集

這套包含640份報告的合集,涵蓋了AI大模型的理論研究、技術實現、行業應用等多個方面。無論您是科研人員、工程師,還是對AI大模型感興趣的愛好者,這套報告合集都將為您提供寶貴的信息和啟示。

img

三、AI大模型經典PDF籍

隨著人工智能技術的飛速發展,AI大模型已經成為了當今科技領域的一大熱點。這些大型預訓練模型,如GPT-3、BERT、XLNet等,以其強大的語言理解和生成能力,正在改變我們對人工智能的認識。 那以下這些PDF籍就是非常不錯的學習資源。

img

在這里插入圖片描述

四、AI大模型商業化落地方案

img

階段1:AI大模型時代的基礎理解

  • 目標:了解AI大模型的基本概念、發展歷程和核心原理。
  • 內容
    • L1.1 人工智能簡述與大模型起源
    • L1.2 大模型與通用人工智能
    • L1.3 GPT模型的發展歷程
    • L1.4 模型工程
      - L1.4.1 知識大模型
      - L1.4.2 生產大模型
      - L1.4.3 模型工程方法論
      - L1.4.4 模型工程實踐
    • L1.5 GPT應用案例

階段2:AI大模型API應用開發工程

  • 目標:掌握AI大模型API的使用和開發,以及相關的編程技能。
  • 內容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具類框架
      - L2.1.4 代碼示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架應用現狀
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架與Thought
      - L2.2.5 Prompt框架與提示詞
    • L2.3 流水線工程
      - L2.3.1 流水線工程的概念
      - L2.3.2 流水線工程的優點
      - L2.3.3 流水線工程的應用
    • L2.4 總結與展望

階段3:AI大模型應用架構實踐

  • 目標:深入理解AI大模型的應用架構,并能夠進行私有化部署。
  • 內容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的設計理念
      - L3.1.2 Agent模型框架的核心組件
      - L3.1.3 Agent模型框架的實現細節
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的應用場景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特點
      - L3.3.2 ChatGLM的開發環境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特點
      - L3.4.2 LLAMA的開發環境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介紹

階段4:AI大模型私有化部署

  • 目標:掌握多種AI大模型的私有化部署,包括多模態和特定領域模型。
  • 內容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的關鍵技術
    • L4.3 模型私有化部署的實施步驟
    • L4.4 模型私有化部署的應用場景

學習計劃:

  • 階段1:1-2個月,建立AI大模型的基礎知識體系。
  • 階段2:2-3個月,專注于API應用開發能力的提升。
  • 階段3:3-4個月,深入實踐AI大模型的應用架構和私有化部署。
  • 階段4:4-5個月,專注于高級模型的應用和部署。
這份完整版的大模型 LLM 學習資料已經上傳CSDN,朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費

😝有需要的小伙伴,可以Vx掃描下方二維碼免費領取🆓

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15567.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot中如何實現定時任務?

在項目開發中,經常需要編寫定時任務來實現一些功能: 定時備份數據庫、定時發送郵件、定時清理數據、定時提醒或通知、信用卡每月還款提醒 未支付的訂單15分鐘之后自動取消、未確認收貨的訂單7天之后自動確認收貨 定時任務的實現: Spring T…

Redis 實戰 - 緩存異常及解決方案

文章目錄 概述一、緩存穿透1.1 緩存穿透是什么1.2 解決方案 二、緩存擊穿2.1 緩存擊穿是什么2.2 解決方案 三、緩存雪崩3.1 緩存雪崩是什么3.2 解決方案 四、拓展4.1 緩存預熱4.2 緩存降級 五、結語 把今天最好的表現當作明天最新的起點…….~ 概述 在實…

YoloV8改進策略:Neck層改進、注意力改進|HCANet全局與局部的注意力模塊CAFM|二次創新|即插即用

yolov9-c summary: 620 layers, 52330674 parameters, 0 gradients, 245.5 GFLOPsClass Images Instances P R mAP50 mAP50-95: 100%|██████████| 15/15 00:06all 230 1412 0.917 0.985 0.99 0.735…

實現自動化巡檢多臺交換機并將輸出信息保存到文本文件中

為了實現自動化巡檢多臺交換機并將輸出信息保存到文本文件中,可以擴展之前的 SSHInspectionTool 類,使其能夠處理多臺交換機的連接和命令執行。我們可以使用多線程來并行處理多個 SSH 連接,以提高效率。 目錄 一、導入依賴包 二、編寫Java類 (1)SSH.java (2)SSHIns…

LeetCode 第131場雙周賽個人題解

100309. 求出出現兩次數字的 XOR 值 原題鏈接 求出出現兩次數字的 XOR 值 - 力扣 (LeetCode) 競賽 思路分析 簽到題,一次遍歷 AC代碼 class Solution:def duplicateNumbersXOR(self, nums: List[int]) -> int:cnt Counter(nums)res 0st set(nums)for x …

Python基礎學習筆記(七)——元組

目錄 一、一維元組的介紹、創建與修改二、組合的基本操作1. 遍歷2. 取長度3. 取最值4. 打包5. 批處理5.1 map()函數5.2 lambda 表達式5.3 lambda 表達式 map()函數 一、一維元組的介紹、創建與修改 元組(tuple),一種不可變、有序、可重復的數…

SpringBoot如何開啟注解的形式,使用Redis Cache

Spring Cache 是一個框架,實現了基于注解的緩存功能,只需要簡單的添加注解,就能實現緩存功能。 Spring Cache 提供了一層抽象,底層可以切換不同的緩存實現,例如:Redis、EHCache、Caffeine等 步驟&#xf…

【大模型】Spring AI對接ChatGpt使用詳解

目錄 一、前言 二、spring ai介紹 2.1 什么是Spring AI 2.2 Spring AI 特點 2.3 Spring AI 為開發帶來的便利 2.4 Spring AI應用領域 2.4.1 聊天模型 2.4.2 文本到圖像模型 2.4.3 音頻轉文本 2.4.4 嵌入大模型使用 2.4.5 矢量數據庫支持 2.4.6 用于數據工程ETL框架 …

2024-05-22 VS2022使用modules

點擊 <C 語言編程核心突破> 快速C語言入門 VS2022使用modules 前言一、準備二、使用其一, 用VS installer 安裝模塊:第二個選項就是, 與你的代碼一同編譯std模塊, 這個非常簡單, 但是也有坑. 總結 前言 要解決問題: 使用VS2022開啟modules. 想到的思路: 跟著官方文檔整…

Java進階學習筆記19——內部類

1、 內部類&#xff1a; 是類中五大成分之一&#xff08;成員變量、方法、構造函數、內部類、代碼塊&#xff09;&#xff0c;如果一個類定義在另一個 類的內部&#xff0c;這個類就是內部類。 場景&#xff1a;當一個類的內部&#xff0c;包含了一個完整的事物&#xff0c;且…

Android ART 虛擬機簡析

源碼基于&#xff1a;Android U 1. prop 名稱選項名稱heap 變量名稱功能 dalvik.vm.heapstartsize MemoryInitialSize initial_heap_size_ 虛擬機在啟動時&#xff0c;向系統申請的起始內存 dalvik.vm.heapgrowthlimit HeapGrowthLimit growth_limit_ 應用可使用的 max…

Scikit-Learn樸素貝葉斯

Scikit-Learn樸素貝葉斯 1、樸素貝葉斯1.1、貝葉斯分類1.2、貝葉斯定理1.3、貝葉斯定理的推導1.4、樸素貝葉斯及原理1.5、樸素貝葉斯的優缺點2、Scikit-Learn樸素貝葉斯2.1、Sklearn中的貝葉斯分類器2.2、Scikit-Learn樸素貝葉斯API2.3、Scikit-Learn樸素貝葉斯實踐(新聞分類與…

Python——文件操作相關

1. 讀文件方式 第一種 有規律的名稱 第二種 無規律的名稱 2. 文件名稱 用 “{:05d}” 來規范輸出數字所占位數&#xff0c;例如&#xff1a; for i in range(100):gt_file Reference/ image "{:05d}".format(i) .jpgprint(gt_file)輸出&#xff1a; ... Re…

爬山算法的詳細介紹

目錄 &#x1f349;概述 &#x1f349; 步驟 &#x1f349; 優缺點 &#x1f348;優點 &#x1f348;缺點 &#x1f348;應對策略 &#x1f349;示例 &#x1f348;旅行商問題 &#x1f34d;步驟 &#x1f34d;分解代碼 &#x1f34e;包含頭文件 &#x1f34e;定義函…

Cortex-M3的SysTick 定時器

目錄 概述 1 SysTick 定時器 1.1 SysTick 定時器功能介紹 1.2 SysTick 定時器功能實現 1.3 SysTick在系統中的作用 2 SysTick應用的實例 2.1 建立異常服務例程 2.2 使能異常 2.3 鬧鐘功能 2.4 重定位向量表 2.5 消滅二次觸發 3 SysTick在FreeRTOS中的應用 3.1 STM…

【代碼】結構體

哈嘍大家好&#xff0c;我是學霸小羊&#xff0c;今天講講結構體。 先看例題&#xff1a; 例1.老師給了小楊一份同學們的考試成績&#xff0c;包括語數英三科&#xff0c;老師讓小明按照總分排序&#xff0c;請你幫幫他吧&#xff01; 輸入數據&#xff1a; 第1行 學生總人…

在docker中運行SLAM十四講程序

《十四講》的示例程序依賴比較多&#xff0c;而且系統有點舊。可以在容器中運行。 拉取鏡像 docker pull ddhogan/slambook:v0.1這個docker對應的github&#xff1a;HomeLH/slambook2-docker 拉下來之后&#xff0c;假如是Windows系統&#xff0c;需要使用XLaunch用于提供X11…

面試大雜燴之kafka

面試這個領域最近環境不行&#xff0c;所以卷起來流量挺大 關于K8s 其實看我之前的博客&#xff0c;k8s剛有點苗頭的時候我就研究過&#xff0c;然后工作的時候間接接觸 也自己玩過 但是用的不多就忘記了&#xff0c;正苦于不知道寫什么&#xff0c;水一篇 用來面試應該是夠了…

C++ | Leetcode C++題解之第111題二叉樹的最小深度

題目&#xff1a; 題解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

VC編譯sample_onnx_mnist提示無法打開輸入文件cudnn.lib

出現錯誤 LNK1181 無法打開輸入文件“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64\cudnn.lib” 解決辦法&#xff1a;下載cudnn&#xff0c;NVIDIA cuDNN | NVIDIA Developer 拷貝相應的文件到CUDA安裝的目錄下。 VC編譯libtorch提示無法打開輸入文件cu…