概念
四大支柱:Langchain、langGraph、deep agent、langsmith
Agent=LLM+Planning+Tools+Memory+Action
AnaConda:主要用来简化数据科学和机器学习的环境搭建 。它集成了 Python 解释器、常用科学计算包以及包管理工具
# 切换python环境conda activate lanchain1.2# 安装ChatOpenAI依赖包pipinstalllangchain-openai pipinstalllangchain-deepseek# 用于管理环境的包pipinstallpython-dotenvRAG(检索增强生成)开发:大模型的知识冻结(训练的知识时效问题)和大模型幻觉(一本正经的胡说八道就是幻觉),提升回答准确率。
大模型应用开发的场景
- 纯Prompt
- Agent + Function Calling
- RAG(智能客户用的比较多):Embeddings、向量数据库、向量搜索
- Fine-tuning(精调/微调)
pip install -r
通过专用API调用
调用大模型最重要的几个参数: base_url、model_name、api_key,放在env文件中
deepseek
deepseek官方文档
importosfromurllibimportresponsefromdotenvimportload_dotenvfromlangchain_deepseekimportChatDeepSeek# 读取.env配置文件load_dotenv(override=True)# 默认ChatDeepSeek的api_key、api_base就是这两个key值,也可以不显式加载DEEPSEEK_API_KEY=os.getenv("DEEPSEEK_API_KEY")DEEPSEEK_BASE_URL=os.getenv("DEEPSEEK_BASE_URL")MODEL_NAME=os.getenv("MODEL_NAME")# 模型初始化llm_deepseek=ChatDeepSeek(model=MODEL_NAME,api_key=DEEPSEEK_API_KEY,api_base=DEEPSEEK_BASE_URL,)# 模型调用response=llm_deepseek.invoke("请用一句话介绍你自己")print(response)智谱(GLM)
官网
fromlangchain_community.chat_modelsimportChatZhipuAIimportosfromdotenvimportload_dotenv# 读取.env配置文件load_dotenv(override=True)# ZHIPUAI_API_KEY = os.getenv("ZHIPUAI_API_KEY")# ZHIPUAI_BASE_URL = os.getenv("ZHIPUAI_BASE_URL")ZHIPUAI_MODEL_NAME=os.getenv("ZHIPUAI_MODEL_NAME")# 模型初始化llm_zhipu=ChatZhipuAI(model=ZHIPUAI_MODEL_NAME,# api_key=ZHIPUAI_API_KEY,# api_base=ZHIPUAI_BASE_URL,)# 模型调用response=llm_zhipu.invoke("请用一句话介绍你自己")print(response)兼容的解法
使用ChatOpenAI
fromlangchain_openai.chat_models.baseimportChatOpenAI# 读取.env配置文件load_dotenv(override=True)DEEPSEEK_API_KEY=os.getenv("DEEPSEEK_API_KEY")# 如果是智谱的话应该配置:https://open.bigmodel.cn/api/paas/v4DEEPSEEK_BASE_URL=os.getenv("DEEPSEEK_BASE_URL")model=ChatOpenAI(model="deepseek-v4-flash",api_key=DEEPSEEK_API_KEY,base_url=DEEPSEEK_BASE_URL,)print(model.invoke("今天是几月几日?"))中转平台
OpenRouter
fromlangchain_openrouter.chat_modelsimportChatOpenRouterimportosfromdotenvimportload_dotenv# 读取.env配置文件load_dotenv(override=True)OPENROUTER_API_KEY=os.getenv("OPENROUTER_API_KEY")OPENROUTER_API_BASE=os.getenv("OPENROUTER_API_BASE")model=ChatOpenRouter(model="inclusionai/ling-3.0-flash-sante:free",api_key=OPENROUTER_API_KEY,base_url=OPENROUTER_API_BASE,)print(model.invoke("如果你有一万元你会做什么"))CloseAI
# 使用CloseAIfromlangchain_openai.chat_models.baseimportChatOpenAIfromdotenvimportload_dotenvimportos# 读取.env配置文件load_dotenv(override=True)CLOSEAI_API_KEY=os.getenv("CLOSEAI_API_KEY")# 如果是智谱的话应该配置:https://open.bigmodel.cn/api/paas/v4CLOSEAI_BASE_URL=os.getenv("CLOSEAI_BASE_URL")model=ChatOpenAI(model="gpt-6-astra",api_key=CLOSEAI_API_KEY,base_url=CLOSEAI_BASE_URL,)print(model.invoke("一句话介绍你自己?"))使用LangChain的统一方式
init_chat_model()
参数
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| model | str | 使用的特定提供商的模型名称(必需)。 比如:openai:gpt-4o、groq:gemma2-9b-it | 无 |
| model_provider | str | 模型提供商名称 | 无 |
| api_key | str | API 密钥。如果不提供,会从环境变量中读取(如 DEEPSEEK_API_KEY) | None |
| base_url | str | 大模型供应商API请求地址。 | None |
| temperature | float | 控制输出随机性,范围 0.0-2.0,温度越高输出越随机。 - 0.0 :最确定性,输出几乎不变 - 1.0 :平衡创造性和一致性 - 2.0 :最随机,最有创造性 | 0.7 |
| max_tokens | int | 限制模型输出的最大 token 数量 | None |
| timeout | float | 超时时间(秒),超时未响应,请求会被取消。 | None |
| max_retries | int | 请求失败(如网络问题、速率限制)时的最大重试次数 | 6 |
常用的重要参数
temperature参数的使用场景,区间是0.0-2.0,值越小越没有创意性
- 0.0-0.3:需要一致性、准确性的任务(数学计算、数据提取、分类、代码生成)
- 0.5-0.7:平衡创造性和一致性(聊天、问答)
- 0.8-1.5:创造性任务(写作、头脑风暴)
- 1.5-2.0:高度创造性(诗歌、故事写作),可能会有幻觉问题
max_tokens
本地部署模型的部署与调用
Ollama
去官网下载并安装Ollama,安装模型
# 下载、运行模型的指令ollama run deepseek-r1:1.5b# 结束模型/bye# 查看已有模型ollama list使用本地ollama中的模型进行初始化
fromlangchain_ollamaimportChatOllama model=ChatOllama(model="deepseek-r1:1.5b",base_url="http://localhost:11434",)print(model.invoke("一句话介绍你自己?"))# 使用init_chat_modelmodel2=init_chat_model(model="deepseek-r1:1.5b",model_provider="ollama",base_url="http://localhost:11434")print(model.invoke("一句话介绍你自己?"))vLLM
模型的调用
invoke
阻塞式,一次性返回完整结果问答、批量处理任务,无需实时反馈的场景
参数
- input
- config
stream
流式输出,实时返回每个token,适合聊天机器人、长文本生成、需提升用户交互体验的场景
batch
批量处理多个输入高并发场景,需要同时处理多个请求
异步方法
ainvoke:非阻塞式,提高系统吞吐量高并发Web应用、IO密集型任务
astream
abatch