特殊的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中有個內置的抽取鏈,能夠做到這件難事兒,實現抽取鏈有兩種方式
使用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))
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大模型時代的學習之旅:從基礎到前沿,掌握人工智能的核心技能!
二、640套AI大模型報告合集
這套包含640份報告的合集,涵蓋了AI大模型的理論研究、技術實現、行業應用等多個方面。無論您是科研人員、工程師,還是對AI大模型感興趣的愛好者,這套報告合集都將為您提供寶貴的信息和啟示。
三、AI大模型經典PDF籍
隨著人工智能技術的飛速發展,AI大模型已經成為了當今科技領域的一大熱點。這些大型預訓練模型,如GPT-3、BERT、XLNet等,以其強大的語言理解和生成能力,正在改變我們對人工智能的認識。 那以下這些PDF籍就是非常不錯的學習資源。
四、AI大模型商業化落地方案
階段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 總結與展望
- L2.1 API接口
階段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 其他大模型介紹
- L3.1 Agent模型框架
階段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掃描下方二維碼免費領取🆓