函数调用与 API 集成
掌握如何提示 LLM 调用外部函数或 API,使其能够与现实世界的系统交互
函数调用与 API 集成 是 CoddyKit 上的免费 AI Prompt Engineering 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Prompt Engineering 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Prompt Engineering 课程共包含 3 节课。
调用外部工具
LLM 很强大,但它们主要存在于文本世界中。如果它们需要现实世界的信息或需要执行操作,该怎么办?
函数调用让 LLM 能够与外部工具和应用程序接口互动!这弥合了语言与行动之间的差距,使人工智能能够:
- get 当前信息(天气、股价)
- 执行操作(发送电子邮件、预约)
- 连接到数据库或自定义工具
这为人工智能系统解锁了新的可能性。
LLM 的角色:提出调用建议
启用函数调用后,您需要向 LLM 提供可用工具(函数)的说明。
LLM 可能不会直接回答,而是判断某个工具能够提供帮助。然后,它会输出一个结构化的函数调用“建议”,其中包括函数名称及其参数。
重要提示:LLM 不会自行执行函数。它只会告诉您的应用程序应调用哪个函数,以及应向其提供哪些输入。
定义您的工具
要使用函数调用,您必须以 LLM 能够理解的方式定义工具(函数)。这通常包括提供以下内容:
- 函数的名称(例如:
get_current_weather) - 函数功能的描述(这对 LLM 正确选择函数至关重要)
- 函数接受的参数,包括参数的类型和描述(例如:
location: string)
这个“架构”会告诉 LLM 提出有效调用所需的一切信息。
天气工具定义
下面是一个天气工具的概念性 Python 定义。请注意其中清晰的描述和参数。这就是您会向 LLM 公开的内容。
这个函数代表了 LLM 在概念上会“调用”的外部工具。
def get_current_weather(location: str, unit: str = "celsius"):
"""
Get the current weather in a given location.
Args:
location (str): The city and state, e.g. "London, UK"
unit (str): The unit of temperature, "celsius" or "fahrenheit"
Returns:
dict: Weather information.
"""
# In a real app, this would call a weather API
if location == "London, UK":
return {"temperature": "15", "unit": unit, "forecast": "cloudy"}
elif location == "New York, USA":
return {"temperature": "20", "unit": unit, "forecast": "sunny"}
else:
return {"temperature": "N/A", "unit": unit, "forecast": "unknown"}
为工具编写提示词
要促使 LLM 使用您的工具,提示词需要清楚地说明用户的意图。然后,LLM 会判断工具是否能够提供帮助。
您不需要明确告诉 LLM“调用 get_weather”。相反,您可以提出一个暗示这一需求的问题:
- “伦敦的天气怎么样?”
- “您能帮我预订明天的会议吗?”
LLM 掌握工具描述后,就会推断出需要进行函数调用。
LLM 的调用建议
当 LLM 决定使用工具时,它不会直接给出 answer。相反,它会返回一个结构化对象(通常为 JSON),指出要调用的函数及其参数。
然后,您的应用程序会解析这一输出。
如果有人询问“伦敦的天气怎么样?”,LLM 可能会提出如下建议:
{
"tool_calls": [
{
"id": "call_abc123",
"function": {
"name": "get_current_weather",
"arguments": "{\"location\": \"London, UK\", \"unit\": \"celsius\"}"
},
"type": "function"
}
]
}您的应用程序运行工具
收到 LLM 的函数调用建议后,您的应用程序会接手处理:
- 识别所请求的函数(例如:
get_current_weather)。 - 提取参数(例如:
"London, UK")。 - 在应用程序环境中执行实际的 Python 函数(或发出应用程序接口调用)。
现实世界中的操作就是在这里发生的,而不是在 LLM 内部发生。
LLM 处理工具输出
应用程序执行函数后,会收到一个结果(例如:{"temperature": "15", ...})。
随后,系统会将这一结果连同原始对话历史和函数调用请求一起传回 LLM。
然后,LLM 会利用这些新信息,针对用户最初的查询生成自然语言回复。
端到端互动
让我们把整个过程串起来。这个示例展示了这样一个流程:用户的问题触发 LLM 提出函数调用建议,您的应用程序执行该调用,然后 LLM 给出最终 answer。
这是对互动循环的简化表示。
def get_current_weather(location, unit="celsius"):
if location == "London, UK":
return {"temp": "15", "unit": unit, "forecast": "cloudy"}
return {"temp": "N/A", "unit": unit, "forecast": "unknown"}
def simulate_llm_response(user_query):
# LLM 'thinks' and decides to call a tool
if "weather in London" in user_query:
return {
"type": "tool_call",
"function": "get_current_weather",
"args": {"location": "London, UK"}
}
return {"type": "text", "content": "I cannot help with that."}
def simulate_llm_final_response(tool_output):
# LLM processes tool output and gives natural language
temp = tool_output.get("temp", "N/A")
forecast = tool_output.get("forecast", "unknown")
return f"The weather in London is {temp} degrees and {forecast}."
def main():
user_input = "What is the weather in London, UK?"
print(f"User: {user_input}")
llm_output = simulate_llm_response(user_input)
if llm_output["type"] == "tool_call":
func_name = llm_output["function"]
func_args = llm_output["args"]
print(f"LLM suggested calling: {func_name}({func_args})")
# Execute the function
tool_result = get_current_weather(**func_args)
print(f"Tool output: {tool_result}")
# Feed result back to LLM
final_answer = simulate_llm_final_response(tool_result)
print(f"LLM's final answer: {final_answer}")
else:
print(f"LLM: {llm_output['content']}")
if __name__ == "__main__":
main()
函数调用检查
假设 LLM 返回了一个函数调用请求。您的应用程序接下来应立即采取的下一步是什么?
回顾:工具的实际应用
在本课中,我们探讨了 LLM 如何通过函数调用和应用程序接口集成与现实世界互动。
我们了解到:
- 您可以通过描述和参数定义工具(函数)。
- LLM 会建议调用哪个工具以及使用哪些参数。
- 您的应用程序会执行实际的工具,并将结果传回。
- 然后,LLM 会利用结果组织出最终且信息充分的回复。
这一强大技术让 LLM 不再局限于文本生成,还能执行操作并获取最新信息。
用 AI 导师学习 AI Prompt Engineering — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 53
- 课程
- 199
常见问题解答
「函数调用与 API 集成」课时是免费的吗?
是的 — 「函数调用与 API 集成」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Prompt Engineering 课程的其余内容,请升级到 CoddyKit PRO。 AI Prompt Engineering 课程共包含 3 节课。
「函数调用与 API 集成」这节课中我会学到什么?
掌握如何提示 LLM 调用外部函数或 API,使其能够与现实世界的系统交互 你通过在浏览器中直接运行的动手代码来练习 AI Prompt Engineering,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Prompt Engineering 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Prompt Engineering 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「函数调用与 API 集成」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Prompt Engineering 课中编写并运行代码吗?
能。每节 AI Prompt Engineering 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 函数调用与 API 集成
- 多智能体提示系统
- LLM 的自定义工具与插件