work hard work smart

专注于AI+Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

LangChain模型调用

Posted on 2026-10-03 16:13  work hard work smart  阅读(6)  评论(0)    收藏  举报

1、LangChian 环境安装

想让当前虚拟环境以后默认走清华源,可先执行:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

- 安装langchain
- 安装langchain-openai
- 安装openai
- 安装dotenv
- 安装langchain-core


# langchain 提供核心框架(Chain, Agent, Memory, Retriever等)
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple

# 提供OpenAI专用组件(LLM, Chat, Embeddings等),依赖 openai SDK
pip install langchain-openai -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple


# 通过 python-dotenv 库读取 env 文件中的环境变量,并加载到当前运行的环境中
pip install python-dotenv -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install langchain-core

 

2、LangChian 大模型调用

qwen-plus 模型

# 1.导入依赖
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model

load_dotenv(encoding='utf-8')


# 2.实例化模型
# 什么是关键字参数 k1=v1 ,k2 = v2
model = init_chat_model(
    model="qwen-plus",
    model_provider="openai",
    api_key=os.getenv("aliQwen-api"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

# 3.调用模型
print(model.invoke("你是谁").content)


print("*" * 50)

  

deepseek模型

# LangChain1.0+版本使用方式,目前主流,多模型共存


# 1.导入依赖
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
import os
# .env文件读取
load_dotenv()

说明:
model="deepseek-chat" 和 base_url="https://api.deepseek.com" 
刚好匹配默认的 model_provider(如 deepseek),因此无需显式传入,函数内部做了智能推导
如果切换成其他模型(如 OpenAI),若默认值不匹配,就需要显式指定 model_provider="openai"。
"""
model = init_chat_model(
    model="deepseek-chat", # deepseek-chat 对应 DeepSeek-V3.2 的非思考模式
    model_provider="deepseek",
    api_key=os.getenv("deepseek-api"),
    base_url="https://api.deepseek.com"
)

# 5.调用模型v2
print(model.__dict__)
print(model.invoke("你是谁").content)

 安装pip install langchian-deepseek

 

3、流式输出

一次性输出 调用invoke方法

流式输出 调用stream 关键代码

llm.stream("介绍下langchain,300字以内")
        for chunk in responseStream:
            print(chunk.content,end="")

完整代码

# 导入必要的库
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv
from langchain_core.exceptions import LangChainException

# 加载.env文件中的环境变量(指定编码,避免中文乱码)
load_dotenv(encoding='utf-8')

# 配置日志(可选,便于调试)
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)


def init_llm_client() -> ChatOpenAI:
    """
    初始化LLM客户端(封装成函数,提高复用性)

    Returns:
        ChatOpenAI: 初始化后的LLM客户端实例
    """
    # 1. 读取环境变量并做非空校验
    api_key = os.getenv("QWEN_API_KEY")
    if not api_key:
        raise ValueError("环境变量 QWEN_API_KEY 未配置,请检查.env文件")

    # 2. 初始化LLM客户端(参数命名规范,添加注释)
    llm = ChatOpenAI(
        model="deepseek-v3.2",  # 模型名称
        api_key=api_key,  # 通义千问API密钥
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # 阿里云兼容接口地址
        temperature=0.7,  # 可选:添加温度参数,控制输出随机性
        max_tokens=2048  # 可选:限制输出长度,避免超限
    )
    return llm


def main():
    """主函数:封装核心逻辑,符合Python工程化规范"""
    try:
        # 初始化客户端
        llm = init_llm_client()
        logger.info("LLM客户端初始化成功")

        # 调用模型(问题用变量存储,提高可读性)
        question = "你是谁"
        response = llm.invoke(question)

        # 格式化输出结果(而非直接打印原始对象)
        logger.info(f"问题:{question}")
        logger.info(f"回答:{response.content}")

        print("====================以下是流式输出,另一种调用方式")
        print("*" * 50)
        responseStream = llm.stream("介绍下langchain,300字以内")
        for chunk in responseStream:
            print(chunk.content,end="")
    # 捕获具体异常(而非宽泛的Exception)
    except ValueError as e:
        logger.error(f"配置错误:{str(e)}")
    except LangChainException as e:
        logger.error(f"模型调用失败:{str(e)}")
    except Exception as e:
        logger.error(f"未知错误:{str(e)}")


# 脚本入口(符合Python规范,避免导入时执行代码)
if __name__ == "__main__":
    main()