AI,人工智能(Artificial Intelligence),是一门致力于使机器能够模拟人类思维、学习与解决问题的技术.

机器学习-深度学习-大语言模型...

现在的AI都是采用神经网络架构,你可以把它看做是AI的大脑,是决定AI是否”聪明”的基础。

人工智能三要素 = 数据 + 算法 + 算力

LLM(Large Language Model,大语言模型)基于Transformer 架构,用海量文本训练,理解、生成人类语言,能推理、对话、写代码、做 Agent。代表:GPT 系列、通义千问、DeepSeek、Qwen、Llama、GLM 等。

LLM 应用架构(Dify / LangChain 本质就是这套)

  1. 基础大模型:提供语言能力
  2. Prompt 工程:指令约束、格式要求、角色设定
  3. RAG:外挂私有数据
  4. Tool/Function Calling:调用外部工具
  5. Agent 智能体:自主规划 + 多轮调用工具
  6. 记忆 Memory:记住上下文、历史对话

LLM服务(调用SDK)

DeepSeek / 百炼 / Ollama. Google/Claude/Azure 的 SDK

一个是国外的一个是国内的,都是一种东西,注册→拿 API_KEY→看文档→curl / 代码调用,流程完全一样.所有这些 SDK / 模型服务,本质全是「大模型 HTTP 接口的调用工具 / 服务」

国内首选阿里百炼平台(因为有很多免费token,不用充值)

申请账号,支付宝扫码可以登录认证

查看一下API官方文档

  • 请求方式:通常是POST,因为要传递JSON风格的参数

  • 请求URL:与平台有关

    • DeepSeek官方平台:https://api.deepseek.com/chat/completions

    • 阿里云百炼平台:https://dashscope.aliyuncs.com/compatible-mode/v1

    • 本地ollama部署的模型:http://localhost:11434

  • 请求头:开放平台都需要提供API_KEY来校验权限,本地ollama则不需要

    • Content-Type: application/json,请求参数的格式,必须是application/json,稍后解释

    • Authorization: Bearer <DeepSeek API Key>,上一节创建的API_KEY

  • 请求参数:JSON格式:

{
    "model": "deepseek-chat",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Hello!"}
    ],
    "stream": false
}
  • model:模型名称,DeepSeek支持deepseek-reasonerdeepseek-chat两者模型

  • messages:发送给大模型的消息,[]是数组的意思,里面可以有多条消息。消息结构:

    • content:是消息的内容

    • role:消息的角色,有system、user、assisant三种角色

      • system:是给大模型设定一个角色,比如你让她扮演你的奶奶,让她哄你睡觉

      • user:就是用户提问的问题

      • assisant:是大模型的回答

  • stream:true,代表响应结果流式返回;false,代表响应结果一次性返回,但需要等待

注意,这里请求参数中的messages是一个消息数组,而且其中的消息要包含两个属性:

  • role:消息对应的角色

  • content:消息内容

其中System和User消息的内容,也被称为提示词Prompt),也就是用户发送给大模型的指令

  • System提示词,是系统指令,给大模型设定一个角色,比如你让她扮演你的奶奶,让她哄你睡觉

  • User提示词,是用户指令,也就是用户向大模型的提问或命令

通常消息的角色有三种:

角色

描述

示例

system

优先于user指令之前的指令,也就是给大模型设定角色和任务背景的系统指令

你是一个乐于助人的编程助手,你以小团团的风格来回答用户的问题。

user

终端用户输入的指令(类似于你在ChatGPT聊天框输入的内容)

写一首关于Java编程的诗

assistant

由大模型生成的消息,可能是上一轮对话生成的结果

注意,用户可能与模型产生多轮对话,每轮对话模型都会生成不同结果。

然后apifox测试一下

注意写好headers和用密钥

本地部署需要用ollama

教程可见我之前文章ollama部署本地和云端大模型实践以及dify中配置ollama和dify日志查看-CSDN博客\

我本地已经装了ollama还有qwen3:8b

http://127.0.0.1:11434/api/chat

大模型每次调用都是独立的,为了保持记忆必须在每次请求时,将之前所有对话的历史拼接好,传递给对话API接口

要想让AI具备记忆,就必须把对话历史都添加到请求体中的messages数组中,像这样:

{
    "model": "deepseek-chat",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "12个苹果分给3个人,每人能分几个?直接告诉我答案"},
      {"role": "assistant", "content": "每人可以分到4个苹果。"},
      {"role": "user", "content": "如果是分给4个人呢?"}
    ],
    "stream": false
  }

安装uv管理Python版本

打开cmd

# 创建一个名为 `venv` 的虚拟环境(默认目录)
uv venv

# 指定虚拟环境名称或路径
uv venv myenv

#激活
.\myenv\Scripts\activate

uv pip install langchain
uv pip install ollama
uv pip install fastapi uvicorn
uv pip install openai

pycharm新版,2025.26年以上的才有uv.我之前是24.3.所以一直不行,需要重新下载pycharm

创建好试一下

然后我们uv add notebook

新建一个Jupiter

接着我们看看云端的sdk和api的区别

这个都是百炼平台的

这是openAI的SDK调用方式(我们专门实践一下)

import os
from openai import OpenAI

# 注意: 不同地域的base_url不通用(下方示例使用北京地域的 base_url)
# - 华北2(北京): https://dashscope.aliyuncs.com/compatible-mode/v1
# - 美国(弗吉尼亚): https://dashscope-us.aliyuncs.com/compatible-mode/v1
# - 新加坡: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
# - 德国(法兰克福): https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1,请将WorkspaceId替换为业务空间ID
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen3.6-plus",
    messages=[{'role': 'user', 'content': '你是谁?'}]
)
print(completion.choices[0].message.content)

还有url的api调用方式

curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.6-plus",
    "messages": [
        {
            "role": "user",
            "content": "你是谁?"
        }
    ]
}'

我们动手实测一下

报错可见没安装这个包

uv pip install openai jupyter python-dotenv

测试完sdk调用后,我们做第一个agent

首先安装依赖

uv pip list #查看一下有什么依赖

没有longchain,安装他,注意调用 阿里云百炼 / 通义千问 Qwen 系列模型,用 langchain-openai 就是对的因为百炼、通义千问都兼容 OpenAI 接口格式,直接用这个包就行

首先uv add langchain

其次 uv add langchain-openai

开发agent流程: 1.加载环境变量2.定义工具;3.定义agent.4.调用agent

1.还是用dotenv去获取

2.定义工具

必须记住 3 个关键点

  1. @tool 必须写在函数上面
  2. 文档字符串是给 AI 看的说明书,必须写清楚
  3. AI 靠描述判断用不用工具
# 从 LangChain 工具模块导入 tool 装饰器
from langchain.tools import tool
# 装饰器:把普通函数 → 变成 AI 能用的 LangChain Tool
@tool
# 定义一个普通函数
def get_weather(location: str) -> str:
"""
Get the weather in a given location.
Args:
    location: city name or coordinates
"""
return f"Current weather in {location} is sunny"
# 直接像函数一样用
print(get_weather.invoke("北京"))

逐行语法

# 从 LangChain 工具模块导入 tool 装饰器
from langchain.tools import tool
# 装饰器:把普通函数 → 变成 AI 能用的 LangChain Tool
@tool

@tool魔法标记加了它,函数就会自动变成:

  • 有名字
  • 有描述
  • 能被 AI 调用的工具

不加,AI 不认识!

# 定义一个普通函数
def get_weather(location: str) -> str:
  • get_weather:工具名
  • location: str:参数是字符串(城市名)
  • -> str:返回字符串
"""
Get the weather in a given location.
Args:
    location: city name or coordinates
"""

这是最重要的部分!这叫 文档字符串(docstring)AI 就是靠看这个注释,决定要不要调用这个工具!

AI 会看:

  • 这个工具是干嘛的?
  • 要传什么参数?
  • 参数什么意思?

你写得越清楚,AI 用得越准!

return f"Current weather in {location} is sunny"

函数真正执行的逻辑(模拟天气)


核心原理(一句话讲透)

@tool = 把你的 Python 函数 → 包装成 AI 大模型能看懂、能调用的工具

流程是这样的:

  1. 你写函数
  2. @tool 变成工具
  3. AI 看文档字符串知道工具功能
  4. AI 判断:我需要用这个工具
  5. AI 自动调用它
  6. 拿到结果继续回答你


from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
import os

load_dotenv()

# 创建LLM
llm = ChatOpenAI(
    model="qwen3-max",
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_BASE_URL"),
)

# 👉 新版 LangChain 必须用 model= ,不是 llm=
agent = create_agent(
    model=llm,         # 这里是 model!不是 llm!
    tools=[get_weather]
)

 Agent如何知道工具信息

你现在正在做 Agent 工具调用(查天气),这就是 MCP 的雏形:

  • LangChain 是自己的私有工具协议
  • MCP 是行业通用标准工具协议

未来:你写好一个 MCP 天气工具,通义千问、DeepSeek、GPT 的 Agent 都能直接调用,不用改代码

MCP = Model Context Protocol(模型上下文协议)由 Anthropic(Claude 所属公司)推出,是开源、通用、标准化的通信协议,用来解决:

大模型 ↔ 本地文件、数据库、浏览器、API、代码编辑器、第三方工具 的统一对接问题

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐