LangChain 模型使用

在由大型语言模型(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()

未经允许不得转载:一亩三分地 » LangChain 模型使用
评论 (0)

7 + 8 =