背景
今日在学习LangChain的过程中,不断理解与实践,逐渐有了一些自己的感悟和理解。今日想着,不妨将一些心路历程写下来。知识整理的同时,又可以惠及后人,固有此文。
LangChain介绍与最新大模型
介绍
LangChain作为一个高度抽象的大模型工具链框架,最本质的功能就在于链的使用。
本系列博客将从最基本的大模型开始,一步一步构建出诸多链,完成诸多功能
最新大模型参考
由于OpenAI已经宣布不再对国内市场进行API的调用服务,所以本系列采用的均为国内百度千帆大模型:QianfanChatEndpoint 的 ERNIE-3.5-8K 版本大模型。虽然官网标注不可工具调用,但是实测是可以的,只是仅能调用一个工具(截至2024年7月5号)。
Model | 调用 | 异步调用 | 流 | 异步流 | 工具调用 | 结构化输出 | Python 包 |
---|---|---|---|---|---|---|---|
AzureChatOpenAI | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-openai |
BedrockChat | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatAnthropic | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-anthropic |
ChatAnyscale | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatBaichuan | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatCohere | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-cohere |
ChatCoze | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatDatabricks | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatDeepInfra | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatEverlyAI | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatFireworks | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-fireworks |
ChatFriendli | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatGooglePalm | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | langchain-community |
ChatGroq | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-groq |
ChatHuggingFace | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatHunyuan | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatJavelinAIGateway | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | langchain-community |
ChatKinetica | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | langchain-community |
ChatKonko | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | langchain-community |
ChatLiteLLM | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatLiteLLMRouter | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatMLX | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatMLflowAIGateway | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | langchain-community |
ChatMaritalk | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatMistralAI | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-mistralai |
ChatMlflow | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatOctoAI | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatOllama | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatOpenAI | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-openai |
ChatPerplexity | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatPremAI | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatSparkLLM | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
ChatTongyi | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatVertexAI | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | langchain-google-vertexai |
ChatYandexGPT | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | langchain-community |
ChatYuan2 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ChatZhipuAI | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
ErnieBotChat | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | langchain-community |
GPTRouter | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
GigaChat | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
JinaChat | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
LlamaEdgeChatService | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | langchain-community |
MiniMaxChat | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | langchain-community |
PaiEasChatEndpoint | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | langchain-community |
PromptLayerChatOpenAI | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | langchain-community |
QianfanChatEndpoint | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
SolarChat | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | langchain-community |
VolcEngineMaasChat | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
LangChain:基础LLM创建和问答
使用langchain后简单的不要不要。
import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain import PromptTemplate, LLMChain
# 设定百度千帆大模型的AK和SK-去百度千帆官网的控制台新建一个应用即可
os.environ["QIANFAN_AK"] = "your AK“"
os.environ["QIANFAN_SK"] = "your SK"
#创建千帆LLM模型
qianfan_chat = QianfanChatEndpoint(
model="ERNIE-3.5-8K",
temperature=0.2,
timeout=30,
)
while True:
prompt = input("user: ")
print(qianfan_chat(prompt))
该部分主要的难点在于,千帆大模型的AK和SK的获取……,这是我能想到的唯一可能造成阻碍的部分了。到此还是很简单的,加油各位!
千帆大模型的参数 (进阶)
若是上诉已经搞定,还轻轻松松,可以稍微看下此的部分。下列参数基本上是几个大模型统一的,都差不多。
大模型参数
- model: str
- Name of Qianfan model to use.
- temperature: Optional[float]
- Sampling temperature.
- endpoint: Optional[str]
- Endpoint of the Qianfan LLM
- top_p: Optional[float]
- What probability mass to use.
客户端相关参数(主要看你能不能连接上百度大模型的云)
- timeout: Optional[int]
- Timeout for requests.
- api_key: Optional[str]
- Qianfan API KEY. If not passed in will be read from env var QIANFAN_AK.
- secret_key: Optional[str]
- Qianfan SECRET KEY. If not passed in will be read from env var QIANFAN_SK.