【值得收藏】大模型“超能力“:Function Calling实现实时数据获取与系统交互

前言

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

但现如今的大模型又是怎么做到这些的呢?答案就是——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是不是很简单,我们只需要将函数的具体功能实现并告诉大模型,这样大模型就会自动调用函数获取关键信息。

普通人如何抓住AI大模型的风口?

为什么要学AI大模型

当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!

DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

在这里插入图片描述

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
在这里插入图片描述

AI大模型开发工程师对AI大模型需要了解到什么程度呢?我们先看一下招聘需求:

在这里插入图片描述

知道人家要什么能力,一切就好办了!我整理了AI大模型开发工程师需要掌握的知识如下:

大模型基础知识

你得知道市面上的大模型产品生态和产品线;还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异;以及了解开源模型的二次开发优势,以及闭源模型的商业化限制,等等。

img

了解这些技术的目的在于建立与算法工程师的共通语言,确保能够沟通项目需求,同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。

产品经理还需要有业务sense,这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大,模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术,更多的是从技术边界、成本等角度出发,选择合适的技术方案来实现需求,甚至用业务来补足技术的短板。

AI Agent

现阶段,AI Agent的发展可谓是百花齐放,甚至有人说,Agent就是未来应用该有的样子,所以这个LLM的重要分支,必须要掌握。

Agent,中文名为“智能体”,由控制端(Brain)、感知端(Perception)和行动端(Action)组成,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”,让它自动完成工作。

Agent的核心特性

自主性: 能够独立做出决策,不依赖人类的直接控制。

适应性: 能够根据环境的变化调整其行为。

交互性: 能够与人类或其他系统进行有效沟通和交互。

img

对于大模型开发工程师来说,学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多,比如dify、coze,拿来做一个小项目,你就会发现,其实并不难。

AI 应用项目开发流程

如果产品形态和开发模式都和过去不一样了,那还画啥原型?怎么排项目周期?这将深刻影响产品经理这个岗位本身的价值构成,所以每个AI产品经理都必须要了解它。

img

看着都是新词,其实接触起来,也不难。

从0到1的大模型系统学习籽料

最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师(吴文俊奖得主)
在这里插入图片描述

给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

图片

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。
在这里插入图片描述

AI大模型系统学习路线

在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

  • 基础篇,包括了大模型的基本情况,核心原理,带你认识了解大模型提示词,Transformer架构,预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门AI大模型
  • 进阶篇,你将掌握RAG,Langchain、Agent的核心原理和应用,学习如何微调大模型,让大模型更适合自己的行业需求,私有化部署大模型,让自己的数据更加安全
  • 项目实战篇,会手把手一步步带着大家练习企业级落地项目,比如电商行业的智能客服、智能销售项目,教育行业的智慧校园、智能辅导项目等等

img

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。

AI大模型入门到实战的视频教程+项目包

看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

在这里插入图片描述
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

海量AI大模型必读的经典书籍(PDF)

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
在这里插入图片描述

600+AI大模型报告(实时更新)

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

AI大模型面试真题+答案解析

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
在这里插入图片描述

在这里插入图片描述

AI时代,企业最需要的是既懂技术、又有实战经验的复合型人才,**当前人工智能岗位需求多,薪资高,前景好。**在职场里,选对赛道就能赢在起跑线。抓住AI这个风口,相信下一个人生赢家就是你!机会,永远留给有准备的人。

如何获取?

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

### 实现实时天气查询的大模型 Function Calling 调用 在实现大模型实时天气查询功能中,Function Calling 是一个关键的技术手段。由于大语言模型本身不具备实时性,其知识截止于训练数据的时间点,因此无法直接提供最新的天气信息。通过调用外部函数(如第三方 API 或数据库),可以弥补这一局限,从而为用户提供准确的实时天气反馈 [^1]。 #### 1. 准备工作 首先需要明确几个核心组件: - **大语言模型**:负责理解用户输入并生成自然语言响应。 - **外部函数**:用于获取实时天气数据,例如 `get_weather` 函数。 - **函数接口**:定义输入参数和返回值格式,确保模型之间的通信顺畅。 - **对话历史**:提供上下文信息,帮助模型决定是否需要调用函数以及调用哪个函数。 #### 2. 实现步骤 ##### (1) 定义函数接口 假设有一个名为 `get_weather` 的函数,该函数接受城市名称作为参数,并返回当前温度、湿度等天气信息。示例代码如下: ```python def get_weather(city: str): # 模拟从第三方API获取天气数据 weather_data = { "广州": {"temperature": 30, "humidity": "65%", "condition": "晴"}, "北京": {"temperature": 20, "humidity": "45%", "condition": "多云"} } return weather_data.get(city, {"error": "城市未找到"}) ``` ##### (2) 配置工具调用 使用 OpenAI 的 `gpt-4-turbo` 模型进行 Function Calling,需要将函数注册到 `tools` 参数中,并指定 `tool_choice` 来强制调用特定函数。以下是一个完整的调用示例: ```python import openai # 初始化 OpenAI 客户端 openai.api_key = "your_api_key" # 注册函数工具 tools = [ { "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的实时天气信息", "parameters": { "type": "object", "city": {"type": "string", "description": "要查询的城市名称"} }, "required": ["city"] } } ] # 发起请求 response = openai.client.chat.completions.create( model="gpt-4-turbo", messages=[{"role": "user", "content": "查询广州天气"}], tools=tools, tool_choice={"type": "function", "function": {"name": "get_weather"}} ) # 提取并展示结果 tool_response = response.choices[0].message.tool_calls[0].function_call weather_info = get_weather(tool_response.arguments["city"]) print(f"城市: {tool_response.arguments['city']}") print(f"温度: {weather_info['temperature']}°C") print(f"湿度: {weather_info['humidity']}") print(f"天气状况: {weather_info['condition']}") ``` ##### (3) 整合结果到自然语言回复 最后,将获取到的天气数据整合进自然语言的回答中,例如: > 广州当前温度为 30°C,湿度为 65%,天气晴朗。 这种做法不仅提升了用户体验,还充分发挥了大语言模型外部函数的协同优势 [^3]。 #### 3. 注意事项 - 确保 API 密钥等敏感信息妥善管理,避免泄露。 - 对于不同的用户查询,应灵活选择是否调用函数,避免不必要的资源消耗。 - 在实际部署中,建议加入异常处理机制,例如城市不存在或 API 调用失败的情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值