首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >llama-cpp-python快速上手 - plus studio

llama-cpp-python快速上手 - plus studio

作者头像
plus sign
发布于 2024-02-29 00:14:24
发布于 2024-02-29 00:14:24
1.9K0
举报
文章被收录于专栏:个人博客个人博客

llama-cpp-python快速上手

搭建环境

项目地址GitHub,有能力的话可以直接阅读原始文档。

首先按照文档,安装llama-cpp-python

代码语言:text
复制
pip install llama-cpp-python

接下来,你可能缺一些依赖,这一点在文档中没有涉及但是我整理了我缺少的依赖,依次运行即可。

代码语言:text
复制
pip install uvicorn
pip install anyio
pip install starlette
pip install fastapi
pip install pydantic_settings
pip install sse_starlette

高级API和低级API

高级API

高级 API 通过Llama类提供简单的托管接口。请将./models/7B/ggml-model.bin 换成你的模型的路径,下同。

代码语言:text
复制
from llama_cpp import Llama
llm = Llama(model_path="./models/7B/ggml-model.bin")
output = llm("Q: Name the planets in the solar system? A: ", max_tokens=32, stop=["Q:", "\n"], echo=True)
print(output)

返回值如下

代码语言:text
复制
{
  "id": "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "text_completion",
  "created": 1679561337,
  "model": "./models/7B/ggml-model.bin",
  "choices": [
    {
      "text": "Q: Name the planets in the solar system? A: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto.",
      "index": 0,
      "logprobs": None,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 28,
    "total_tokens": 42
  }
}

低级API

低级 API 直接ctypes绑定到llama.cpp. 整个低级 API 可以在llama_cpp/llama_cpp.py中找到,并直接镜像llama.h中的 C API 。

代码语言:text
复制
import llama_cpp
import ctypes
params = llama_cpp.llama_context_default_params()
# use bytes for char * params
ctx = llama_cpp.llama_init_from_file(b"./models/7b/ggml-model.bin", params)
max_tokens = params.n_ctx
# use ctypes arrays for array params
tokens = (llama_cpp.llama_token * int(max_tokens))()
n_tokens = llama_cpp.llama_tokenize(ctx, b"Q: Name the planets in the solar system? A: ", tokens, max_tokens, add_bos=llama_cpp.c_bool(True))
llama_cpp.llama_free(ctx)

搭建与openai接口兼容的服务器接口

llama-cpp-python提供一个 Web 服务器,旨在作为 OpenAI API 的直接替代品。

代码语言:text
复制
python3 -m llama_cpp.server --model models/7B/ggml-model.bin

你可以在上面的命令运行成功后访问文档

文档是全英的,想要对话接口的话我用python写了个示例

代码语言:text
复制
import requests
  
url = 'http://localhost:8000/v1/chat/completions'
headers = {
	'accept': 'application/json',
	'Content-Type': 'application/json'
}
data = {
	'messages': [
		{
		'content': 'You are a helpful assistant.',
		'role': 'system'
		},
		{
		'content': 'What is the capital of France?',
		'role': 'user'
		}
	]
}
  
response = requests.post(url, headers=headers, json=data)
print(response.json())
print(response.json()['choices'][0]['message']['content'])

如果你想自建一个接口,请在遵守相关法律法规的情况下,在自己的服务器上启动相关服务,并反向代理http://localhost:8000 地址。例如你反向代理到了https://example.com,那你的对话地址就是https://example.com/v1/chat/completions。当你想用gpt的时候就不用看openai的脸色了,直接部署一个自己的接口自己请求,或者调用openai库的时候apibase写自己的接口。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-7-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》070-商业项目:电商后台管理系统实战(商品管理模块的开发)
在电商平台中,商品管理模块是连接商家与消费者的重要桥梁。它不仅承担着商品信息的录入、修改与删除等基本功能,还涉及到库存管理、价格调整、上下架操作等多项关键任务。一个高效的商品管理模块能够帮助商家轻松管理各种商品,提高销售效率,并确保用户获得准确的信息。
愚公搬代码
2025/06/03
1810
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》070-商业项目:电商后台管理系统实战(商品管理模块的开发)
【前端面考面试官系列】入门Vue全家桶
达达回答:Vue的安装可以从两个方面进行安装,第一种是CDN引入,第二种是NPM安装。
达达前端
2020/02/18
8960
【前端面考面试官系列】入门Vue全家桶
一个后端狗的 Vue 笔记【入门级】
最近找了些教程,顺带着趴在官网上,看了看 Vue 的一些内容,入门的一些概念,以及基础语法,还有一些常用的操作,瞄了一眼,通篇文字+贴了部分代码 9000 多字,入门语法什么的还是很好理解的,以前也有一定做小程序的基础,感觉还是很相似的,不过对于一些稍复杂的点,感觉还是总结的不够细致,例如插槽,和计算属性等,平时前端的东西看的也不是很多,学习过程中整理的笔记,和大家一起分享交流!欢迎各位大大交流意见~
BWH_Steven
2020/09/10
1.4K0
一个后端狗的 Vue 笔记【入门级】
10 个 Vue 开发技巧,助力成为更好的工程师!
在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性。
逆锋起笔
2020/06/17
1.9K0
VUE Cookbook 系列:实现可配置组合表单
本案例将会讲解如何使用 vue.js + ElementUI 开发一个简单的 可配置组合表单 Demo。
IMWeb前端团队
2019/12/03
1K0
0基础菜鸟学前端之Vue.js
  简介:0基础前端菜鸟,啃了将近半月前端VUE框架,对前端知识有了初步的了解。下面总结一下这段时间的学习心得。 文章结构 前端基础 Vue.js简介 Vue.js常用指令 Vue.js组件 Vue
互联网金融打杂
2018/04/03
4.5K0
0基础菜鸟学前端之Vue.js
React、Vue3、Svelte 写法大 PK
本文将会从响应式、模板、生命周期、组件、表单、网络请求等几个方面,来对比 React、Vue3、Svelte 三大流行组件的用法区别。
ConardLi
2023/08/23
4211
React、Vue3、Svelte 写法大 PK
9个Vue开发技巧助力成为更好的工程师
原文链接:https://juejin.im/post/5e8a9b1ae51d45470720bdfa
歪马
2020/04/16
4.3K0
vue学习笔记-day03
语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
全栈程序员站长
2022/06/30
8810
vue学习笔记-day03
【前端大神面考面试官系列】入门Vue全家桶
达达回答:Vue的安装可以从两个方面进行安装,第一种是CDN引入,第二种是NPM安装。
达达前端
2022/04/13
1.3K0
【前端大神面考面试官系列】入门Vue全家桶
6. Element Plus前端组件库
Element-UI 是基于 Vue 开发的一套UI组件库,提供丰富网页开发的组件,可快速开发网站,降低前端开发成本。
alexhuiwang
2023/04/24
5.7K0
6. Element Plus前端组件库
【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
---- 更新属性的过程 点击某一个组件,选中组件 将它的属性以不同类型的表单呈现在右侧区域 编辑表单中的值,在值更新的同时,将数据更新到界面 获取正在编辑的元素的属性 组件外套一层 wrapper 用来隔离点击事件和组件自身行为 鼠标经过组件添加边框样式 点击某一个组件,选中组件,选中的组件添加高亮样式 点击某一个组件,向父组件 Editor.vue 发射 setActive 事件 Editor.vue 通过 commit 更新 store 中的状态 store 中接收组件 id,计算当前组件的属性 E
一尾流莺
2022/12/10
7460
【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
vue.js学习之入门实例
之前一直看过vue.js官网api,但是很少实践,这里抽出时间谢了个入门级的demo,记录下一些知识点,防止后续踩坑,牵扯到的的知识点:vue、vue-cli、vue-router、webpack等。
用户1141560
2017/12/26
1.4K0
vue.js学习之入门实例
4. 许愿墙后台管理系统(前端页面)
许愿墙的后台管理系统主要有4个模块:登录模块、首页模块、许愿管理模块和管理员管理模块。使用前后端分离方式,后端接口使用Express框架,前端使用Vue框架,页面使用Element组件。这节实现前端页面。
爱学习的程序媛
2022/04/07
9940
4. 许愿墙后台管理系统(前端页面)
【一起来烧脑】一步学会Vue.js系统
Vuejs是一个构建数据驱动的web界面的库,通过api实现响应的数据绑定和组合的视图组件,Vue.js的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单,一旦创建了绑定,DOM 将与数据保持同步。
达达前端
2019/07/18
1.3K0
【一起来烧脑】一步学会Vue.js系统
TienChin 渠道管理-前端展示渠道信息
在编写 Vue 项目的时候我们可以使用 IDEA 当中提供的一个工具叫做 structure,也就是说可以很轻松的列举出当前 Vue 文件的大致结构,点那个就会跳转到对应的地方。
程序员NEO
2023/10/12
3680
TienChin 渠道管理-前端展示渠道信息
一篇文章,Vue快速入门!!!
MVVM源自于经典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用。其作用如下:
全栈程序员站长
2022/08/19
2K0
一篇文章,Vue快速入门!!!
重学巩固你的Vuejs知识(上)
https://github.com/webVueBlog/interview-answe/issues/156
达达前端
2020/10/28
3.8K0
前端MVC Vue2学习总结(五)——表单输入绑定、组件
一、表单输入绑定 1.1、基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。 v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值。 1.1.1、文本 <input v-model="message" placeholder="edit me"> <p>Message is: {{
张果
2018/03/30
3.6K0
前端MVC Vue2学习总结(五)——表单输入绑定、组件
VUE2全家桶精讲
概念:Vue (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。
HelloWorldZ
2024/03/20
5840
VUE2全家桶精讲
相关推荐
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》070-商业项目:电商后台管理系统实战(商品管理模块的开发)
更多 >
目录
  • llama-cpp-python快速上手
    • 搭建环境
    • 高级API和低级API
      • 高级API
      • 低级API
    • 搭建与openai接口兼容的服务器接口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档