侧边栏壁纸
博主头像
Zeeland

全栈算法工程师 | 大模型创业 | 开源项目分享 | Python开发者 | @Promptulate Founder | @SparkLab cofounder | @LangChainAI Top Contributor | @CogitLab core member

  • 累计撰写 61 篇文章
  • 累计创建 47 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

轻松集成所有大模型——一站式大模型应用开发框架Promptulate

Zeeland
2024-03-31 / 0 评论 / 0 点赞 / 43 阅读 / 1,338 字

Introduction

本文将介绍如何使用 Promptulate 集成市面上大部分的模型,以及本地模型,进行大模型应用开发。

项目介绍

PromptulateCogit 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 模型和本地模型。

  • 首先,打开终端,输入以下命令安装框架:
pip install -U promptulate  

注意:Your Python version should be 3.8 or higher.

你可以使用下面的方式十分轻松的构建起任何第三方模型的调用,下面的示例展示了如何调用一个 OpenAI gpt-4-1106-preview 模型:

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,那么你可以通过如下方式调用:

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 封装起一个需要返回的数据结构。

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:

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应用开发的不二选择。

0

评论区