黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目
大模型开发核心: RAG、Agent ------ LangChain
-
提示词优化(开发基础、基础到进阶、写精准提示词、提示词优化)
-
LangChain1.2核心技术学习(核心组件、工作原理、零基础都能懂)
-
RAG实战案例(项目案例、文档处理、向量数据库搭建、向量数据检索匹配)
-
Agent(需求拆解、Agent定义、工具调用、流程控制、实战开发)
1.前置准备
大模型的接入
本地部署:通过 Ollama 部署:Qwen、Deepseek
云端大模型:阿里云百炼平台:存在免费额度;可以使用 API key
代码调用 云端大模型
openai: python提供 访问云端模型的工具库
可以 使用 环境变量 记录值,自动读取变量从而获取值
在 阿里云百炼-模型广场找到模型调用代码,并使用自己申请的 API KEY进行代码调用 云端大模型。后续可以把API KEY 使用环境变量保护起来
运行阿里云提供的调用代码即可
python
from openai import OpenAI
import os
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key="xxx",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "你能解决什么问题?"}]
completion = client.chat.completions.create(
model="qwen3.5-plus", # 您可以按需更换为其它深度思考模型
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
is_answering = False # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
delta = chunk.choices[0].delta
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(delta.content, end="", flush=True)

Ollama
一款简化大型语言模型本地部署和运行过程的开源软件(本地版)
支持多种开源模型,涵盖文本生成、代码生成、多模态推理
win部署ollama
官网安装ollama,如下:

选择模型,会自动下载模型 并进行回答
代码调用ollama本地模型
修改代码:
- base_url: http://localhost:11434/v1
- 将模型改为 对应本地模型,如 qwen3:4b
代码如下:
python
from openai import OpenAI
import os
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
# base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
base_url="http://localhost:11434/v1",
)
messages = [{"role": "user", "content": "你能解决什么问题?"}]
completion = client.chat.completions.create(
# model="qwen3.5-plus", # 您可以按需更换为其它深度思考模型
model="gamma3:4b",
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
is_answering = False # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
delta = chunk.choices[0].delta
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(delta.content, end="", flush=True)