- 💖 作者简介:大家好,我是Zeeland,大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。
- 📝 掘金主页:Zeeland🔥
- 📣 我的博客:Zeeland
- 📚 Github主页: Undertone0809 (Zeeland)
- 🎉 支持我:点赞👍+收藏⭐️+留言📝
- 💬介绍:The mixture of software dev+Iot+ml+anything🔥
Introduction
本文将介绍如何使用 Promptulate 集成市面上大部分的模型,以及本地模型,进行大模型应用开发。
项目介绍
Promptulate 是 Cogit Lab 打造的 AI Agent 应用开发框架,通过 Pythonic 的开发范式,旨在为开发者们提供一种极其简洁而高效的 Agent 应用构建体验。 🛠️ Promptulate 的核心理念在于借鉴并融合开源社区的智慧,集成各种开发框架的亮点,以此降低开发门槛并统一开发者的共识。通过 Promptulate,你可以用最简洁的代码来操纵 LLM, Agent, Tool, RAG 等组件,大多数任务仅需几行代码即可轻松完成。
💡特性
- 🐍 Pythonic Code Style: 采用 Python 开发者的习惯,提供 Pythonic 的 SDK 调用方式,一切尽在掌握,仅需一个 pne.chat 函数便可封装所有必需功能。
- 🧠 模型兼容性: 支持市面上几乎所有类型的大模型,并且可以轻松自定义模型以满足特定需求。
- 🕵️♂️ 多样化 Agent: 提供 WebAgent、ToolAgent、CodeAgent 等多种类型的 Agent,具备计划、推理、行动等处理复杂问题的能力。
- 🔗 低成本集成: 轻而易举地集成如 LangChain 等不同框架的工具,大幅降低集成成本。
- 🔨 函数即工具: 将任意 Python 函数直接转化为 Agent 可用的工具,简化了工具的创建和使用过程。
- 🪝 生命周期与钩子: 提供丰富的 Hook 和完善的生命周期管理,允许在 Agent、Tool、LLM 的各个阶段插入自定义代码。
- 💻 终端集成: 轻松集成应用终端,自带客户端支持,提供 prompt 的快速调试能力。
- ⏱️ Prompt 缓存: 提供 LLM Prompt 缓存机制,减少重复工作,提升开发效率。
支持的基础模型
pne 集成了 litellm 的能力,支持几乎市面上所有类型的大模型,包括但不限于以下模型:
Provider | Completion | Streaming | Async Completion | Async Streaming | Async Embedding | Async Image Generation |
---|---|---|---|---|---|---|
openai | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
azure | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
aws – sagemaker | ✅ | ✅ | ✅ | ✅ | ✅ | |
aws – bedrock | ✅ | ✅ | ✅ | ✅ | ✅ | |
google – vertex_ai [Gemini] | ✅ | ✅ | ✅ | ✅ | ||
google – palm | ✅ | ✅ | ✅ | ✅ | ||
google AI Studio – gemini | ✅ | ✅ | ||||
mistral ai api | ✅ | ✅ | ✅ | ✅ | ✅ | |
cloudflare AI Workers | ✅ | ✅ | ✅ | ✅ | ||
cohere | ✅ | ✅ | ✅ | ✅ | ✅ | |
anthropic | ✅ | ✅ | ✅ | ✅ | ||
huggingface | ✅ | ✅ | ✅ | ✅ | ✅ | |
replicate | ✅ | ✅ | ✅ | ✅ | ||
together_ai | ✅ | ✅ | ✅ | ✅ | ||
openrouter | ✅ | ✅ | ✅ | ✅ | ||
ai21 | ✅ | ✅ | ✅ | ✅ | ||
baseten | ✅ | ✅ | ✅ | ✅ | ||
vllm | ✅ | ✅ | ✅ | ✅ | ||
nlp_cloud | ✅ | ✅ | ✅ | ✅ | ||
aleph alpha | ✅ | ✅ | ✅ | ✅ | ||
petals | ✅ | ✅ | ✅ | ✅ | ||
ollama | ✅ | ✅ | ✅ | ✅ | ||
deepinfra | ✅ | ✅ | ✅ | ✅ | ||
perplexity-ai | ✅ | ✅ | ✅ | ✅ | ||
Groq AI | ✅ | ✅ | ✅ | ✅ | ||
anyscale | ✅ | ✅ | ✅ | ✅ | ||
voyage ai | ✅ | |||||
xinference [Xorbits Inference] | ✅ |
详情可以跳转 litellm documentation 查看所有支持的模型。
快速上手
下面将介绍如何使用 Promptulate 来调用 API 模型和本地模型。
- 首先,打开终端,输入以下命令安装框架:
shell复制代码pip install -U promptulate
注意:Your Python version should be 3.8 or higher.
你可以使用下面的方式十分轻松的构建起任何第三方模型的调用,下面的示例展示了如何调用一个 OpenAI gpt-4-1106-preview 模型:
python复制代码import os
import promptulate as pne
os.environ["OPENAI_API_KEY"] = "your key"
resp: str = pne.chat(model="ollama/llama2", messages = [{ "content": "Hello, how are you?","role": "user"}])
如果你的本地模型使用 ollama,那么你可以通过如下方式调用:
python复制代码import promptulate as pne
resp: str = pne.chat(model="ollama/llama2", messages = [{ "content": "Hello, how are you?","role": "user"}], model_config={"api_base": "http://localhost:11434"})
格式化输出是 LLM 应用开发鲁棒性的重要基础,我们希望 LLM 可以返回稳定的数据,使用 pne,你可以轻松的进行格式化输出,下面的示例中,我们使用 pydantic 的 BaseModel 封装起一个需要返回的数据结构。
python复制代码from typing import List
import promptulate as pne
from pydantic import BaseModel, Field
class LLMResponse(BaseModel):
provinces: List[str] = Field(description="List of provinces name")
resp: LLMResponse = pne.chat("Please tell me all provinces in China.?", output_schema=LLMResponse)
print(resp)
Output:
text复制代码provinces=['Anhui', 'Fujian', 'Gansu', 'Guangdong', 'Guizhou', 'Hainan', 'Hebei', 'Heilongjiang', 'Henan', 'Hubei', 'Hunan', 'Jiangsu', 'Jiangxi', 'Jilin', 'Liaoning', 'Qinghai', 'Shaanxi', 'Shandong', 'Shanxi', 'Sichuan', 'Yunnan', 'Zhejiang', 'Taiwan', 'Guangxi', 'Nei Mongol', 'Ningxia', 'Xinjiang', 'Xizang', 'Beijing', 'Chongqing', 'Shanghai', 'Tianjin', 'Hong Kong', 'Macao']
更多示例请参考 Promptulate Documentation
结语
pne.chat()
作为一个一站式的AI对话开发解决方案,为开发者提供了前所未有的便利性和强大功能。无论是想要快速集成LLM,还是需要构建复杂的对话系统,pne.chat()
都能大大降低开发难度,提高开发效率。随着promptulate
未来对工具和检索方法的持续扩展,pne.chat()
将成为LLM应用开发的不二选择。