章节 01
导读 / 主楼:Promptulate:用Pythonic方式构建LLM Agent应用的轻量级框架
Promptulate是一个由Cogit Lab开发的AI Agent应用开发框架,提供极其简洁高效的Pythonic开发范式,让开发者用几行代码就能操控LLM、Agent、Tool、RAG等组件。
正文
Promptulate是一个由Cogit Lab开发的AI Agent应用开发框架,提供极其简洁高效的Pythonic开发范式,让开发者用几行代码就能操控LLM、Agent、Tool、RAG等组件。
章节 01
Promptulate是一个由Cogit Lab开发的AI Agent应用开发框架,提供极其简洁高效的Pythonic开发范式,让开发者用几行代码就能操控LLM、Agent、Tool、RAG等组件。
章节 02
随着大语言模型技术的快速发展,越来越多的开发者开始探索如何构建基于LLM的Agent应用。然而,现有的许多框架要么学习曲线陡峭,要么API设计复杂,让开发者不得不花费大量时间理解框架本身而非专注于业务逻辑。
Promptulate(简称pne)的出现正是为了解决这一痛点。这个由Cogit Lab精心打造的AI Agent应用开发框架,秉持"简单、Pythonic、高效"的核心理念,让开发者用最简洁的代码就能构建功能强大的Agent应用。正如项目文档所言,"大多数任务只需几行代码即可轻松完成"。
章节 03
Promptulate的设计哲学是借鉴并整合开源社区的智慧,吸收各种开发框架的精华,降低入门门槛,统一开发者共识。这种开放包容的态度使得框架在保持简洁的同时,功能却异常丰富。
框架名称Promptulate中的"pne"是昵称,p和e分别代表Promptulate的开头和结尾,而n代表9,即p和e之间九个字母的简写。这个有趣的命名也体现了项目团队的巧思。
章节 04
Promptulate最引人注目的特性是其Pythonic的代码风格。框架深度拥抱Python开发者的习惯,提供符合Python直觉的SDK调用方式。最核心的设计理念是:只需一个pne.chat函数,就能封装所有必要功能。
这种设计极大地降低了学习成本。开发者不需要记忆复杂的类层次结构或配置选项,而是可以用最自然的方式与LLM交互。例如,调用Ollama本地模型的Llama3只需:
import promptulate as pne
resp: str = pne.chat(
model="ollama/llama2",
messages=[{"content": "Hello, how are you?", "role": "user"}]
)
这种简洁的API设计让开发者能够快速上手,将注意力集中在应用逻辑而非框架细节上。
章节 05
Promptulate集成了litellm的能力,支持市面上几乎所有类型的大模型。从OpenAI的GPT系列到Anthropic的Claude,从Google的Gemini到本地的Ollama模型,从AWS Bedrock到Azure OpenAI,框架提供了统一且完整的支持。
支持的提供商包括但不限于:OpenAI、Azure、AWS SageMaker/Bedrock、Google Vertex AI/Gemini、Mistral AI、Anthropic、Cohere、Groq、Together AI、OpenRouter等。这种广泛的兼容性让开发者可以根据需求自由切换模型,而无需修改大量代码。
调用不同模型的方式也非常统一,使用provider/model_name格式即可,例如openai/gpt-4-turbo、anthropic/claude-3或ollama/llama3。
章节 06
Promptulate提供了多种类型的Agent,包括WebAgent、ToolAgent、CodeAgent等,能够进行规划、推理和行动以处理复杂问题。特别值得一提的是,框架将Planner等组件原子化,简化了开发流程。
受Plan-and-Solve论文启发,Promptulate允许开发者构建具备规划、推理和行动能力的Agent。通过启用enable_plan参数,Agent的规划能力被激活。例如,查询2024年澳网冠军家乡的问题,Agent会自动分解任务:先确定冠军是谁,再查找其出生地。
框架还提供了单独的Planner组件用于任务规划。开发者可以实例化Planner,传入模型和系统提示,即可获得结构化的任务计划。这种原子化的设计让开发者可以根据需求灵活组合组件。
章节 07
Promptulate的一大亮点是轻松集成来自不同框架的工具,如LangChain,显著降低集成成本。更令人惊喜的是,框架支持将任何Python函数直接转换为Agent可用的工具,极大简化了工具的创建和使用过程。
例如,使用LangChain的TavilySearchResults工具只需几行代码:
from langchain_community.tools.tavily_search import TavilySearchResults
import promptulate as pne
tools = [TavilySearchResults(max_results=5)]
result = pne.chat(
"what is the hometown of the 2024 Australia open winner?",
model="gpt-4-1106-preview",
enable_plan=True
)
这种无缝集成能力让开发者可以充分利用现有生态,而无需重复造轮子。
章节 08
在LLM应用开发中,稳定的输出格式是构建可靠系统的基础。Promptulate与Pydantic深度集成,支持通过定义BaseModel来约束LLM的输出结构。
例如,要求模型返回中国所有省份的列表:
from typing import List
import promptulate as pne
from pydantic import BaseModel, Field
class LLMResponse(BaseModel):
provinces: List[str] = Field(description="List of provinces' names")
resp: LLMResponse = pne.chat(
"Please tell me all provinces in China.",
output_schema=LLMResponse
)
这种结构化输出能力让开发者可以安全地将LLM集成到生产系统中,获得类型安全的数据处理体验。