Function Calling入门到精通,收藏这篇就够了!从原理到Python实战,打通大模型应用开发的“任督二脉”!

现如今我们已经习惯了大模型能回答问题、写代码、生成文案,但**大模型本身其实“手无缚鸡之力”,**它无法直接访问数据库、不能实时获取天气。

但现如今的大模型又是怎么做到这些的呢?答案就是——Function Calling(函数调用)

一、什么是 Function Calling?

Function Calling 是一种让大模型在理解用户自然语言后,主动调用外部工具或函数的能力。

大模型本身无法直接操作外部系统(如数据库、计算工具),但通过调用预设函数,可以完成:实时数据获取(天气、股价、新闻)、复杂计算(数学运算、代码执行)、操作外部系统(发送邮件、控制智能设备)

模型可将用户自然语言请求转化为结构化参数,传递给函数。例如:用户说“明天北京天气如何?” → 模型调用 get_weather(location=“北京”, date=“2025-05-06”)

模型可根据上下文决定是否/何时调用函数,甚至链式调用多个函数(如先查天气,再推荐穿搭)。

举个例子🌰

我将询问千问大模型北京的天气怎么样,并让千文使用我们自定义的函数查询天气信息并返回个用户天气信息。

首先我们定义一个工具函数,json格式的,是为了让大模型了解这个函数时干什么的,函数参数是什么。

import requests
from http import HTTPStatus
import dashscope
import os
# 设置 DashScope API Key
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")# 高德天气 API 的 天气工具定义(JSON 格式)
weather_tool = {
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name, e.g. 北京",
},
"adcode": {
"type": "string",
"description": "The city code, e.g. 110000 (北京)",
}
},
"required": ["location"],
},
},
}

接着编写天气条用的函数

def get_current_weather(location: str, adcode: str = None):
"""调用高德地图API查询天气"""
gaode_api_key = os.getenv("GAOGE_API_KEY")  # 替换成你的高德API Key
base_url = "https://restapi.amap.com/v3/weather/weatherInfo"
params = {
"key": gaode_api_key,
"city": adcode if adcode else location,
"extensions": "base",  # 可改为 "all" 获取预报
}
response = requests.get(base_url, params=params)
if response.status_code == 200:
return response.json()
else:
return {"error": f"Failed to fetch weather: {response.status_code}"}

通过dashscope调用大模型回答问题,大模型会根据之前的函数定义信息构造出函数需要的参数值和参数格式,再调用函数。

"""使用 Qwen3 + 查询天气"""
messages = [
{"role": "system", "content": "你是一个智能助手,可以查询天气信息。"},
{"role": "user", "content": "北京现在天气怎么样?"}
]
response = dashscope.Generation.call(
model="qwen-turbo-latest",  # 可使用 Qwen3 最新版本
messages=messages,
tools=[weather_tool],  # 传入工具定义
tool_choice="auto",  # 让模型决定是否调用工具
)
if response.status_code == HTTPStatus.OK:
# 检查是否需要调用工具
if "tool_calls" in response.output.choices[0].message:
print('response=', response.output.choices[0])
tool_call = response.output.choices[0].message.tool_calls[0]
print('tool_call=', tool_call)
if tool_call["function"]["name"] == "get_current_weather":
# 解析参数并调用高德API
import json
args = json.loads(tool_call["function"]["arguments"])
location = args.get("location", "北京")
adcode = args.get("adcode", None)
weather_data = get_current_weather(location, adcode)
print(f"查询结果:{weather_data}")
else:
print(response.output.choices[0].message.content)
else:
print(f"请求失败: {response.code} - {response.message}")

summary

怎么样,使用funcation calling是不是很简单,我们只需要将函数的具体功能实现并告诉大模型,这样大模型就会自动调用函数获取关键信息。

那么,如何系统的去学习大模型LLM?

作为一名深耕行业的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
在这里插入图片描述

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
在这里插入图片描述
在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
在这里插入图片描述
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值