magentic简介
magentic是一个用于将大型语言模型(LLM)无缝集成到Python代码中的强大库。它提供了简单易用的装饰器@prompt
和@chatprompt
,让开发者可以轻松创建返回LLM结构化输出的函数。通过将LLM查询和函数调用与常规Python代码混合使用,magentic能够创建复杂的逻辑。
主要特性
magentic具有以下主要特性:
- 使用pydantic模型和内置Python类型的结构化输出
- 通过聊天提示实现少样本提示和结构化示例
- 通过
FunctionCall
和ParallelFunctionCall
返回类型进行函数调用和并行函数调用 - 使用格式化自然地将Python对象插入到提示中
- 支持异步IO,只需在定义magentic函数时使用
async def
- 流式传输结构化输出,在生成过程中即可使用
- 使用视觉功能轻松从图像获取结构化输出
- LLM辅助重试以提高LLM对复杂输出模式的遵守
- 支持多个LLM提供商,包括OpenAI和Anthropic,详见配置说明
- 类型注解使其能与linters和IDE良好配合
安装方法
可以使用pip安装magentic:
pip install magentic
或使用poetry:
poetry add magentic
安装完成后,需要设置OPENAI_API_KEY
环境变量来配置OpenAI API密钥。如需配置其他LLM提供商,请参阅配置文档。
使用示例
@prompt装饰器
@prompt
装饰器允许您将LLM提示模板定义为Python函数。当调用此函数时,参数会被插入到模板中,然后将此提示发送给LLM生成函数输出。
from magentic import prompt
@prompt('Add more "dude"ness to: {phrase}')
def dudeify(phrase: str) -> str: ...
dudeify("Hello, how are you?")
# "Hey, dude! What's up? How's it going, my man?"
@prompt
装饰器会遵守装饰函数的返回类型注解。这可以是pydantic支持的任何类型,包括pydantic
模型。
@chatprompt装饰器
@chatprompt
装饰器的工作方式与@prompt
类似,但允许您传递聊天消息作为模板,而不是单个文本提示。这可用于提供系统消息或少样本提示,您可以提供示例响应来指导模型的输出。
from magentic import chatprompt, AssistantMessage, SystemMessage, UserMessage
from pydantic import BaseModel
class Quote(BaseModel):
quote: str
character: str
@chatprompt(
SystemMessage("You are a movie buff."),
UserMessage("What is your favorite quote from Harry Potter?"),
AssistantMessage(
Quote(
quote="It does not do to dwell on dreams and forget to live.",
character="Albus Dumbledore",
)
),
UserMessage("What is your favorite quote from {movie}?"),
)
def get_movie_quote(movie: str) -> Quote: ...
get_movie_quote("Iron Man")
# Quote(quote='I am Iron Man.', character='Tony Stark')
学习资源
要深入了解magentic的使用,可以参考以下资源:
- 官方文档 - 包含详细的API说明和使用指南
- GitHub仓库 - 源代码和示例
- 示例笔记本 - 各种使用场景的实际示例
- 视频教程 - YouTube上的magentic教程视频
- 社区讨论 - 与其他用户交流经验
通过这些资源,开发者可以快速掌握magentic的使用,并将其应用到自己的项目中,实现LLM与Python代码的无缝集成。
magentic为开发者提供了一种简单而强大的方式来利用LLM的能力。无论是构建聊天机器人、自动化文本生成还是复杂的AI辅助应用,magentic都能成为得力助手。希望本文能帮助您开始使用magentic,探索LLM集成的无限可能!