在由大型语言模型(LLM)驱动的应用开发中,模型的调用与管理始终是核心环节。LangChain 通过提供统一而灵活的模型接口,大大简化了开发者与各类语言模型、文本嵌入模型之间的交互流程。例如:OpenAI 的 GPT 系列、字节跳动的豆包系列模型、DeepSeep、本地部署的 LLM 等等,开发者都可以通过 LangChain 统一的 API 接口进行调用,屏蔽了底层实现的复杂性。这种封装方式不仅提高了开发效率,还增强了系统的可扩展性与可维护性。
简单来说,我们接下来要学习如何通过 LangChain 接口来和不同的模型进行交互。
conda create -n langchain-env python=3.10 pip install langchain pip install langchain-deepseek pip install langchain-ollama pip install langchain-huggingface pip install python-dotenv
文档:https://python.langchain.com/docs/introduction
1. 聊天模型
这一小节,我们介绍下使用 LangChain 如何调用不同厂商的大语言模型。例如:字节跳动的豆包模型、阿里云千问模型、DeepSeek、Ollama 本地模型等等。
from dotenv import load_dotenv import os # 加载环境变量 load_dotenv('llm.env') # 1. 字节跳动火山引擎 # https://www.volcengine.com/ from langchain_openai import ChatOpenAI def demo01(): model = ChatOpenAI(model_name='doubao-pro-32k-241215') response : BaseMessage = model.invoke('你好') print(response.content) # 2. 阿里云百炼大模型 # https://bailian.console.aliyun.com/ from langchain_openai import ChatOpenAI def demo02(): bailian_api_base = os.environ['BAILIAN_API_BASE'] bailian_api_key = os.environ['BAILIAN_API_KEY'] # 对话模型 model = ChatOpenAI(model_name='qwen-plus', api_key=bailian_api_key, openai_api_base=bailian_api_base) response : BaseMessage = model.invoke('你好') print(response.content) # 3. 使用 deepseek/jina 模型 # deepseek: https://platform.deepseek.com/ from langchain_deepseek import ChatDeepSeek def demo03(): model = ChatDeepSeek(model='deepseek-chat') response : BaseMessage = model.invoke('你好') print(response.content) # 4. 使用 ollama 本地模型 from langchain_ollama import ChatOllama def demo04(): # 对话模型 model = ChatOllama(model='deepseek-r1:7b') response : BaseMessage = model.invoke('你好') print(response.content) if __name__ == '__main__': demo01() demo02() demo03() demo04()
2. 向量模型
这一小节,我们介绍下使用 LangChain 如何调用不同厂商的文本向量模型。例如:字节跳动的豆包向量模型、阿里云的文本向量模型、Jina 文本向量模型、Ollama 本地的文本向量模型等等。
from dotenv import load_dotenv import os # 加载环境变量 load_dotenv('llm.env') # 1. 字节跳动火山引擎 # https://www.volcengine.com/ from langchain_openai import OpenAIEmbeddings def demo01(): # 注意:参数 check_embedding_ctx_length 需要设置为 False, 否则会自动将输入的文本进行数值化 model = OpenAIEmbeddings(model='doubao-embedding-text-240715', check_embedding_ctx_length=False) response = model.embed_documents(['你是谁?', '他又是谁?']) print(response) # 2. 阿里云百炼大模型 # https://bailian.console.aliyun.com/ from langchain_openai import ChatOpenAI from langchain_openai import OpenAIEmbeddings def demo02(): bailian_api_base = os.environ['BAILIAN_API_BASE'] bailian_api_key = os.environ['BAILIAN_API_KEY'] model = OpenAIEmbeddings(model='text-embedding-v3', api_key=bailian_api_key, openai_api_base=bailian_api_base, check_embedding_ctx_length=False) response = model.embed_documents(['你是谁?', '他又是谁?']) print(response) # 3. 使用 jina 模型 # jinaai: https://jina.ai/ from langchain_community.embeddings import JinaEmbeddings def demo03(): model = JinaEmbeddings(model_name='jina-embeddings-v3') response = model.embed_documents(['你是谁?', '他又是谁?']) print(response) # 4. 使用 ollama 本地模型 from langchain_ollama import OllamaEmbeddings def demo04(): model = OllamaEmbeddings(model='nomic-embed-text:latest') response = model.embed_documents(['你是谁?', '他又是谁?']) print(response) if __name__ == '__main__': demo01() demo02() demo03() demo04()