Magentic:轻松将大型语言模型整合到 Python 函数中
June 09, 2025
Magentic: 助Python开发者无缝集成大型语言模型
Magentic是一款功能强大、用途广泛的开源Python库,旨在弥合传统Python编程与大型语言模型(LLM)先进能力之间的鸿沟。对于希望在应用中融入AI,同时又不想被大量样板代码或复杂的API调用所困扰的开发者而言,Magentic提供了一个优雅高效的解决方案。
Magentic的核心优势在于其直观的基于装饰器的方法。通过使用@prompt
和@chatprompt
装饰器,开发者可以将普通的Python函数转化为由LLM驱动的智能组件。这使得创建的函数能够将参数动态插入到提示中,并由LLM生成函数的输出,同时遵循指定的返回类型。
主要特性和优势:
- 结构化输出:利用Python的类型提示和Pydantic模型,确保LLM以可预测的结构化格式返回数据。这对于将LLM输出直接集成到应用程序逻辑中至关重要。
- 函数调用:使LLM能够智能地决定何时以及如何调用外部Python函数。Magentic负责处理调用,并传递由LLM生成的参数,这使其非常适合构建能够与外部工具和API交互的智能代理系统。
- 流式处理:在LLM输出生成时即时处理,无论是纯文本还是结构化对象。这显著改善了用户体验,降低了感知延迟并实现了实时交互。
- 异步支持:Magentic在设计时就考虑了
asyncio
,允许并发地查询LLM,极大地加速了需要多次LLM交互的应用程序。 - 多种LLM后端:Magentic是提供商无关的,支持来自OpenAI、Anthropic等流行LLM,甚至可以通过LiteLLM支持Ollama等自托管解决方案或其他OpenAI兼容的API。这种灵活性确保开发者可以选择最适合其需求的模型。
- 可观测性:与OpenTelemetry和Pydantic Logfire的集成提供了对LLM交互的深入洞察,有助于调试和性能监控。
Magentic如何简化开发:
假设你需要一个函数,给定一个城市,它能描述当前的天气。使用Magentic,你可以定义一个get_current_weather
函数,并使用@prompt_chain
来指示LLM调用此函数,然后合成一个人类可读的响应。这种链式调用能力是构建能执行多步推理的复杂AI代理的基础。
from magentic import prompt, prompt_chain, FunctionCall
from pydantic import BaseModel
class Superhero(BaseModel):
name: str
age: int
power: str
enemies: list[str]
@prompt("Create a Superhero named {name}.")
def create_superhero(name: str) -> Superhero: ...
superhero_data = create_superhero("Garden Man")
# Superhero(name='Garden Man', age=30, power='Control over plants', enemies=['Pollution Man', 'Concrete Woman'])
def get_current_weather(location, unit="fahrenheit"):
"""Get the current weather in a given location"""
# Pretend to query an API
return {"temperature": "72"
原创文章:
查看原文