小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【AI大模型應用開發(fā)】【LangChain系列】0. 踏上LangChain之旅:實現(xiàn)你的 Hello World

 小張學AI 2024-02-24 發(fā)布于山東
大家好,我是【同學小張】。持續(xù)學習,持續(xù)干貨輸出,關注我,跟我一起學AI大模型技術!
公眾號內文章一覽

有任何問題,歡迎+vx:jasper_8017,期待與志同道合的朋友一起討論,共同進步!

AI時代,相信大家或多或少都聽過 LangChain 的大名。通俗的說,LangChain是一個面向大模型的開發(fā)框架(SDK)。

目前 LangChain 仍在快速迭代中,所以在使用中要時刻關注你所使用的版本和接口變更。

0. 認識LangChain框架


從上圖可以看到,LangChain 目前有四層框架:

  • 最下層深色部分:LangChain的Python和JavaScript庫。包含無數(shù)組件的接口和集成,以及將這些組件組合到一起的鏈(chain)和代理(agent)封裝,還有鏈和代理的具體實現(xiàn)。

  • Templates:一組易于部署的參考體系結構,用于各種各樣的任務。

  • LangServe:用于將LangChain鏈部署為REST API的庫。

  • LangSmith:一個開發(fā)人員平臺,允許您調試、測試、評估和監(jiān)控基于任何LLM框架構建的鏈,并與LangChain無縫集成。

在最下層深色部分- LangChain的Python和JavaScript庫中,可以看到它封裝了一系列模塊。

  • 模型 I/O 封裝,包括:

    • LLMs:大語言模型

    • ChatModels:一般基于 LLMs,但按對話結構重新封裝

    • Prompt:提示詞模板

    • OutputParser:解析輸出

  • Retrieval 數(shù)據(jù)連接與向量檢索封裝,包括:

    • Retriever: 向量的檢索

    • Document Loader:各種格式文件的加載器

    • Embedding Model:文本向量化表示,用于檢索等操作

    • Verctor Store: 向量的存儲

    • Text Splitting:對文檔的常用操作

  • Agents 根據(jù)用戶輸入,自動規(guī)劃執(zhí)行步驟,自動選擇每步需要的工具,最終完成用戶指定的功能,包括:

    • Tools:調用外部功能的函數(shù),例如:調 google 搜索、文件 I/O、Linux Shell 等等

    • Toolkits:操作某軟件的一組工具集,例如:操作 DB、操作 Gmail 等等

  • Chain 實現(xiàn)一個功能或者一系列順序功能組合

  • Memory 記憶封裝,也就是上下文的管理能力封裝

  • Callbacks 一些過程回調函數(shù)

1. 動手實現(xiàn)你的第一個LangChain程序

1.1 LangChain 環(huán)境

(1)安裝 LangChain

  • pip 安裝

pip install langchain
  • conda 安裝

conda install langchain -c conda-forge

(2)安裝 LangChain X OpenAI

LangChain封裝了對于大模型的調用接口,也就是說,我們可以選擇使用的模型,無論是在線模型還是本地部署的模型。本文我們還是使用OpenAI的API來調用大模型。

pip install -U langchain-openai

1.2 通過LangChain的接口來調用OpenAI對話

import os
# 加載 .env 到環(huán)境變量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

from langchain_openai import ChatOpenAI ## langchain封裝的openai對話接口

llm = ChatOpenAI() # 默認是gpt-3.5-turbo
response = llm.invoke("你是誰"## 通過 invoke 傳入對話
print(response.content)

## 運行結果輸出:我是一個AI助手,沒有具體的身份。我是由OpenAI開發(fā)的,可以幫助回答問題和提供信息。

1.3 多輪對話的封裝

import os
# 加載 .env 到環(huán)境變量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

from langchain_openai import ChatOpenAI

llm = ChatOpenAI() # 默認是gpt-3.5-turbo

from langchain.schema import (
    AIMessage, #等價于OpenAI接口中的assistant role
    HumanMessage, #等價于OpenAI接口中的user role
    SystemMessage #等價于OpenAI接口中的system role
)

messages = [
    SystemMessage(content="你是[同學小張]的個人助理。你叫[小明]"), 
    HumanMessage(content="我叫[同學小張]"), 
    AIMessage(content="好的老板,你有什么吩咐?"),
    HumanMessage(content="我是誰"
]
response = llm.invoke(messages)
print(response.content)

## 運行輸出:您是同學小張。

通過以上代碼可以看到:

  • LangChain內封裝了AIMessage、HumanMessage、SystemMessage等消息類型,區(qū)分消息來源。

  • invoke對話接口接收一系列消息,可以實現(xiàn)多輪對話(上述代碼中的多輪對話在哪:第一輪是“我叫[同學小張]”,第二輪我問它"我是誰"時,第一輪我的名字的信息帶進去了,所以它才能回復:“您是同學小張”)。

這樣模型封裝的意義在哪?

  • 可以實現(xiàn)不同模型間的無縫切換,llm = ChatOpenAI()是GPT模型,它可以換成 llm = ErnieBotChat(),其它代碼都不用改,就可以切換到文心大模型。

好了,本文先寫到這,算是對 LangChain 系列開了個頭。后面咱們深入各個模塊去學習和實戰(zhàn)。

如果覺得本文對你有幫助,麻煩點個贊和關注唄 ~~~



大家好,我是【同學小張】。持續(xù)學習,持續(xù)干貨輸出,關注我,跟我一起學AI大模型技術!
公眾號內文章一覽

有任何問題,歡迎+vx:jasper_8017,期待與志同道合的朋友一起討論,共同進步!

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多