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

  • 💖 作者简介:大家好,我是Zeeland,大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。
  • 📝 CSDN主页:Zeeland🔥
  • 📣 我的博客:Zeeland
  • 📚 Github主页: Undertone0809 (Zeeland)
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 💬介绍:The mixture of software dev+Iot+ml+anything🔥

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 的能力,支持几乎市面上所有类型的大模型,包括但不限于以下模型:

ProviderCompletionStreamingAsync CompletionAsync StreamingAsync EmbeddingAsync 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 pneos.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 pneresp: 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, Fieldclass 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应用开发的不二选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows平台虚拟机安装

windows平台虚拟机安装 1. 安装VMwareWorkstationPro 1.1 软件下载 官网下载 官网 百度网盘下载 版本 VMwareWorkstationPro16 链接:https://pan.baidu.com/s/1LidMxoM9e4a4CANixyRoyg?pwd1157 提取码:1157 1.2 软件安装 软件安装注意事项 软件…

代码学习第32天---动态规划

随想录日记part32 t i m e : time: time: 2024.03.30 主要内容:今天开始要学习动态规划的相关知识了,今天的内容主要涉及两个方面: 不同路径 ; 不同路径 II。 62.不同路径 63. 不同路径 II 动态…

接口和抽象类的区别【大白话Java面试题】

接口和抽象类的区别 大白话回答 1、接口是行为的抽象,是一种行为的规范,接口是like a 的关系;抽象是对类的抽象,是一种模板设计,抽象类是is a 的关系。 2、接口没有构造方法,而抽象类有构造方法&#xff0…

爬虫框架Scrapy从创建到使用

scrapy框架安装命令 1.需要安装python 链接: link 2.scrapy安装命令 python -m pip install Scrapy3. 创建爬虫项目 scrapy startproject 项目名称4.创建爬虫文件 scrapy genspider 爬虫名 域名5.爬虫运行 scrapy crawl 爬虫名scrapy 项目目录介绍 PaC #项目文件名称P…

Canvas实现圆点动画

示例效果图&#xff1a; 话不多说直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><t…

Unity类银河恶魔城学习记录11-10 p112 Items drop源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemObject_Trigger.cs using System.Collections; using System.Collecti…

P28—P31:变量

P28-变量的定义 什么是变量&#xff1f; 从本质上来说&#xff0c;变量就是一块内存空间&#xff0c;而这块内存空间有数据类型、名字、字面值。变量包含三部分&#xff1a;数据类型、名字、字面值&#xff08;数据&#xff09;变量是内存中存储的基本单元。 数据类型的作用&a…

Linux 查看磁盘信息:df与du命令详解

一、df 1.简介 df 是 disk free的缩写&#xff0c;从UNIX和类UNIX操作系统的早期开始&#xff0c;它就是UNIX和类UNIX操作系统的一部分。它被设计为一种工具&#xff0c;用于监视系统上已使用和可用的磁盘空间数量。 df 命令主要用于需要检查文件系统上已使用和可用的磁盘空…

第十三届蓝桥杯JavaA组省赛真题 - GCD

解题思路&#xff1a; 找规律 最大的最小公因数就是两数的差值 5 7 gcd2 1 3 gcd2 1 4 gcd3 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);long a scan.nextLong();long b scan.ne…

查找--二分查找(Binary Search)

二分查找属于静态查找表&#xff0c;当以有序表表示静态查找表时&#xff0c;查找函数可用折半查找来实现。 查找过程&#xff1a;先确定待查记录所在的范围&#xff08;区间&#xff09;&#xff0c;然后逐步缩小范围直到找到或找不到该记录为止。 以处于区间中间位置记录的…

每日一题 --- 替换数字[卡码][Go]

替换数字 题目&#xff1a;54. 替换数字&#xff08;第八期模拟笔试&#xff09; (kamacoder.com) 题目描述 给定一个字符串 s&#xff0c;它包含小写字母和数字字符&#xff0c;请编写一个函数&#xff0c;将字符串中的字母字符保持不变&#xff0c;而将每个数字字符替换为…

Linux appimage如何正确打开

在之前的文章中&#xff0c;提到使用appimage软件非常方便。 但是首次使用会遇到这样的问题&#xff1a; 1. 双击打不开 2. 在终端打开提示&#xff1a; /home/roy/software/appimage/Obsidian-1.5.11.AppImage dlopen(): error loading libfuse.so.2 AppImages require …

【Pandas】(5)eval和query

使用 eval() 进行高效计算 eval() 函数在 Pandas 中是一种高效率的字符串表达式求值器,允许对 DataFrame 进行快速计算。这个功能基于 Numexpr 库,能够加速某些特定类型的操作,尤其是在处理大型 DataFrame 时。 基本使用 eval() 允许你使用字符串表达式来执行算术运算、比…

Python下载bing每日壁纸并实现win11 壁纸自动切换

前言: 爬虫哪家强,当然是python 我是属于啥语言都用,都懂点,不精通,实际工作中能能够顶上就可以。去年写的抓取bing每日的壁纸&#xff0c;保存到本地&#xff0c;并上传到阿里云oss&#xff0c;如果只是本地壁纸切换&#xff0c;存下来就行&#xff0c;一直想做个壁纸站点&…

内存可见性

内存可见性 一:内存可见性1.2: 二:解决内存可见性问题2.1 volatile关键字2.2:synchronized关键字解决内存可见性问题 一:内存可见性 public class Demo1 {public static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1new Thre…

vuees6新语法

vue的学习网站&#xff1a; https://www.runoob.com/vue2/vue-tutorial.html1.Vue的介绍 学习目标 说出什么是Vue能够说出Vue的好处能够说出Vue的特点 内容讲解 【1】Vue介绍 1.vue属于一个前端框架&#xff0c;底层使用原生js编写的。主要用来进行前端和后台服务器之间的…

CubeIDE 下如何将版本号和日期关联。

1. 使用__DATE__ 和__TIME__获取编译日期和时间。 2. 将__DATE__ 和__TIME__转换成UINT 3. 将转换后的数赋值给版本号。 4. 设置工程保证每次都会重新编译对应文件。 对应函数如下&#xff1a; uint8_t VER_MAIN; uint8_t VER_SUB; uint8_t VER_MIN; #include <stdlib.…

我为什么愿意当韭菜

这几年&#xff0c;为了提升自己&#xff0c;我给无数的我认为优秀的人和课付过费。但我从来不认为自己有被割过韭菜。 如果非要说是韭菜&#xff0c;那我认为这个社会每个人都是韭菜&#xff0c;就看是甘愿被割&#xff0c;还是不甘愿。没办法&#xff0c;只有被割才能获得自己…

Python|OpenCV-实现检测人脸以及性别检测(12)

前言 本文是该专栏的第13篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 性别检测是计算机视觉领域里面的一个重要学习领域,简单的来说,它可以实现自动识别一张图片中的人物性别。为此在本文中,笔者将结合OpenCV和Tensorflow来实现对一张图进行“图片中的人物人…

链式前向星板子

对于树&#xff0c;有的时候邻接表可能扩容上慢。而我们可以确定是n-1条边&#xff0c;所以我们可以用“记录前驱节点”的链式的方式存到一起 ———— 链式前向星。 head代表点a在链式前向星nodes数组中,a链的首位于哪个位置。 a链的后继结点都可以通过next 来找到 &#xff…