2024 年最新 Python 基于火山引擎豆包大模型搭建 QQ 机器人详细教程(更新中)

news2024/11/24 9:48:10

豆包大模型概述

火山引擎官网:https://www.volcengine.com/

字节跳动推出的自研大模型。通过字节跳动内部50+业务场景实践验证,每日千亿级tokens大使用量持续打磨,提供多模态能力,以优质模型效果为企业打造丰富的业务体验。

在这里插入图片描述
模型控制台
在这里插入图片描述
当前模型支持类目

在这里插入图片描述

开通模型付费

您可以在 开通管理 页中查看各模型定价与使用限制,开通后使用各模型服务,不同模型的单价不同。其中,大语言模型费用计算方式:费用 = tokens使用量 X 模型 tokens 单价。

Tokens 定义说明: 通常 1 个中文词语、英文单词、数字、符号计为 1 个 token,由于不同模型采用的分词器不同,同一段文本可能会分为不同的 tokens 数量。

在这里插入图片描述

安装 SDK 环境

安装火山 python sdk 环境

pip install volcengine-python-sdk
······
note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for volcengine-python-sdk
  Running setup.py clean for volcengine-python-sdk
Failed to build volcengine-python-sdk
ERROR: Could not build wheels for volcengine-python-sdk, which is required to install pyproject.toml-based projects

解决方案

GitHub 地址:https://github.com/volcengine/volcengine-python-sdk

git clone https://github.com/volcengine/volcengine-python-sdk.git

在这里插入图片描述
开始安装 volcengine-python-sdk

python setup.py install --user

在 Python 中,setup.py 是一个常用的脚本文件,用于安装、分发和管理 Python 包。这个文件通常包含setuptools(或distutils)的调用,用于定义包的各种属性和设置。

python setup.py		这部分命令指示Python解释器运行setup.py脚本。
install				这是setup.py的一个常见命令,用于安装定义的Python包。
--user				这是一个选项,指示安装程序将包安装到用户的Python库目录中,而不是全局的Python库目录。

配置 API KEY 鉴权

方案一:API 管理页面获取 API KEY

进入 API Key 管理 页面,选择需要的项目,点击 创建 API Key,即可生成长效 API Key。all权限默认给予项目下所有模型接入点和智能体访问权限。地址:https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey

在这里插入图片描述

方案二:配置火山引擎 API 的安全凭证

API 访问密钥(Access Key)是请求火山引擎 API 的安全凭证,包含 Access Key ID和Secret Access Key,请您妥善保管并定期轮换密钥,不要将密钥信息共享至公开环境(如上传GitHub),以保障云资源的安全性。建议您使用最小化授权的IAM用户的密钥进行API访问,不建议直接使用主账号密钥或使用权限过大的IAM用户密钥。

访问密钥 Access Key 管理:https://console.volcengine.com/iam/keymanage

在这里插入图片描述
方案三:SDK 获取 API KEY

创建推理接入点地址:https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?current=1&pageSize=10

在这里插入图片描述

推理接入点读取 ENDPOINT_ID 编号:ep-20240619132122-2hx7z

设置 AK/SK 作为环境变量 .env 配置文件

VOLC_ACCESSKEY=YOUR_AK
VOLC_SECRETKEY=YOUR_SK
ENDPOINT_ID=YOUR_ENDPOINT_ID(例如:ep-20240619132122-2hx7z)

源码预览

from __future__ import print_function

import os

import volcenginesdkcore
import volcenginesdkark
from pprint import pprint
from volcenginesdkcore.rest import ApiException
import dotenv
dotenv.load_dotenv(".env")

if __name__ == '__main__':
    configuration = volcenginesdkcore.Configuration()
    configuration.ak = os.getenv("VOLC_ACCESSKEY")
    configuration.sk = os.getenv("VOLC_SECRETKEY")
    configuration.region = "cn-beijing"
    
    volcenginesdkcore.Configuration.set_default(configuration)

   	
    api_instance = volcenginesdkark.ARKApi()
    get_api_key_request = volcenginesdkark.GetApiKeyRequest(
        duration_seconds=30 * 24 * 3600,
        resource_type="endpoint",
        resource_ids=[os.getenv("ENDPOINT_ID")],
    )

    try:
        resp = api_instance.get_api_key(get_api_key_request)
        pprint(resp)
    except ApiException as e:
        print("Exception when calling api: %s\n" % e)

运行结果

{'api_key': '······', 'expired_time': 1721395557}

Ark 模型接口

标准请求 standard request

import os

from volcenginesdkarkruntime import Ark
import dotenv
dotenv.load_dotenv(".env")

client = Ark()

completion = client.chat.completions.create(
    model=os.getenv("ENDPOINT_ID"),
    messages=[
        {"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
        {"role": "user", "content": "常见的十字花科植物有哪些?"},
    ],
)
print(completion.choices[0].message.content)

流式请求 stream request

在 stream 模式下,基于 SSE (Server-Sent Events) 协议返回生成内容,每次返回结果为生成的部分内容片段。内容片段按照生成的先后顺序返回,完整的结果需要调用者拼接才能得到。如果流式请求开始时就出现错误(如参数错误),HTTP返回非200,方法调用也会直接返回错误。如果流式过程中出现错误,HTTP 依然会返回 200, 错误信息会在一个片段返回。

import os

from volcenginesdkarkruntime import Ark
import dotenv
dotenv.load_dotenv(".env")

client = Ark()


stream = client.chat.completions.create(
    model=os.getenv("ENDPOINT_ID"),
    messages=[
        {"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
        {"role": "user", "content": "常见的十字花科植物有哪些?"},
    ],
    stream=True
)
for chunk in stream:
    if not chunk.choices:
        continue
    print(chunk.choices[0].delta.content, end="")

文档地址:https://www.volcengine.com/docs/82379/1263512

Prompt 提示词工程

在自然语言处理(NLP)和对话系统中,提示(prompt)通常是指用户输入的文本或问题。通过仔细设计和选择提示,可以指导模型的生成过程,使其更符合用户的需求。Prompt engineering 是指设计和优化提示的过程,以使人工智能模型能够更好地理解用户的意图和要求,并生成更准确、有用的响应。

Prompt Engineering 主要目标

1. 了解如何格式化和设计提示使模型效果最佳。
2. 探索不同 prompt 对模型输出的影响。
3. 创造出能优化模型输出的提示。

注意:一般业务优化的过程,主要包括三个环节,prompt 设计、prompt 优化和 prompt 评测,如下我们分别分三个部分来进行介绍。

限制模型输出格式

最后针对模型的输出,可以限制输出的格式,一方面可以提高可读性,使结果更清晰明了。另一方面也可以方便后续的处理,提高稳定性。以提取“病症”的任务来展示下如何去限制模型的输出格式。要求直接以 json 的格式返回。

请提取参考资料中的所有病症,并且以json格式返回。
回答满足下面的格式要求:
1、以json的格式返回答案,json只包括一个key, key="disease",对应的值为列表,存储参考资料中的病症。
参考资料:
"""
失眠在《内经》中称为“目不瞑”、“不得眠”、“不得卧”,其原因主要有两种:一是其他病症影响,如咳嗽、呕吐、腹满等,使人不得安卧;二是气血阴阳失和,使人不能入寐。中医常用养心安神的方法治疗失眠,既可治标、又可治本,还可以避免西药安眠药容易成瘾的弊端。中医认为,失眠多因脏腑阴阳失调,气血失和所致。正如《灵枢大惑论》中记载:“卫气不得入于阴,常留于阳,留于阳则气满;阳气满则阳娇盛,不得入于阴则阴气虚,故目不瞑矣。”在临床上,治疗失眠应着重调理脏腑及气血阴阳,以“补其不足,泻其有余,调其虚实”,可采取补益心脾、滋阴降火、交通心肾、疏肝养血、益气镇惊、活血通络等治法,使气血和畅,阴阳平衡,脏腑功能恢复正常。
"""

Prompt 优化:模型扮演角色

让模型扮演一个具体的角色,模型的输出会更符合人类的表达方式,从而更容易被人类理解;同时输出也会更加一致。例如,在问答系统中,让模型扮演一个特定领域的专家可以使其回答更符合该领域的知识和语言习惯,从而提高回答的一致性。

比如下面的案例,让模型分别扮演科学家和玄幻小说家生成一篇文章,文章的主题是:“黑洞是如何形成的”。在科学家的角度下,模型基于科学事实首先解释了黑洞是什么,然后回答了黑洞的形成过程;而在玄幻小说家的角度下,模型此时的输出不再基于科学事实,而是完全虚构,并且给人更多神秘的感觉,勾起读者的兴趣。

在这里插入图片描述

构造分类接口

def construct_classification_req():
    req = {
        "model": {
            "name": "skylark2-pro-4k",  # 这里根据模型不同,设置不同的 model_name
            "version": "1.1",  			# 设置调用模型的版本号
        },
        "parameters": {
            "max_new_tokens": 1000,  	# 输出文本的最大tokens限制
            "min_new_tokens": 1,  		# 输出文本的最小tokens限制
            "temperature": 0.01,  		# 用于控制生成文本的随机性和创造性,Temperature值越大随机性越大,取值范围0~1
            "top_p": 0.7,  				# 用于控制输出tokens的多样性,TopP值越大输出的tokens类型越丰富,取值范围0~1
            "top_k": 0,  				# 选择预测值最大的k个token进行采样,取值范围 0-10000 表示不生效
            "max_prompt_tokens": 3000,  # 最大输入 token 数,如果给出的 prompt 的 token 长度超过此限制,取最后 max_prompt_tokens 个 token 输入模型。
            "system_prompt": '',  		# 系统角色,设定模型的行为和背景,告知模型需要扮演的角色。
            "repetition_penalty": 1.1  	# 重复token输出的惩罚项
        },
        "query": "中国的第一个经济特区是?",
        "labels": ["北京", "珠海", "深圳", "厦门", "上海"]  # 输出的结果都在labels的选项内
    }
    return req

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

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

相关文章

【Python机器学习】自动化特征选择——基于模型的特征选择

基于模型的特征选择使用一个监督机器学习模型来判断每个特征的重要性,并且仅保留最重要的特征。用于特征学习的监督模型不需要与用于最终建模的模型相同。特征选择模型需要为每个特征提供某种重要性度量,以便用这个度量对特征进行排序。决策树和基于决策…

Potato(土豆)一款轻量级的开源文本标注工具

项目介绍: Potato 是一款轻量级、可移植的Web文本标注工具,被EMNLP 2022 DEMO赛道接受。它旨在帮助用户快速地从零开始创建和部署各种文本标注任务,无需复杂的编程或网页设计。只需简单配置,团队即可在几分钟内启动并运行标注项目…

互联网寒冬VS基建饱和:计算机专业会重蹈土木工程的覆辙吗?

随着高考落幕,考生和家长们开始着手专业选择与志愿填报,"热门"与"冷门"专业的话题引起了广泛关注。而计算机专业无疑是最受瞩目的专业领域之一。 在过去的十几年里,计算机专业以其出色的就业率和薪酬水平,一…

LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构 LAMP架构是一种常见的用于构建动态网站的技术栈 组成功能Linux(操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序Apache(Web服务器)接收和处理客户端请求,并将静态和动态内容发送给…

AMEYA360代理:村田电子使用小型振动传感器件,实现设备状态预知检测

株式会社村田制作所近日完成了贴片型振动传感器件“PKGM-200D-R”的商品化。该新产品已开始批量生产供应。 以往FA行业实施的是计划性维护和事后维护,近年来预测性维护逐步受到关注。预测性维护使用各类传感器信息等预测可能发生故障的时间,以便事先采取…

ABAP编程中的参数传递:使用EXPORT/IMPORT与SPA/GPA参数

在ABAP编程中,有效地在程序之间传递数据是实现功能的关键。本文档将介绍两种常用的数据传递方法:EXPORT/IMPORT和SPA/GPA参数,并提供实际示例。 1. 使用EXPORT/IMPORT数据(ABAP/4内存) EXPORT/IMPORT语句允许程序在ABA…

重生之我要学后端0--HTTP协议和RESTful APIs

http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP(超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下: 客户端请求(Request&#xf…

Jmeter,badboy学习

1、注意Jmeter与jdk之间的版本对应 2、Jmeter的作用: jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联&#x…

500多个专业怎么选择,高考填报志愿为什么难?

查成绩,报志愿,选专业,考出怎样的成绩,可选择的学校有哪些?所以很多人会比较慎重,可是慎重也不代表选择就容易。 目前来看,可选择的专业高达500多个,甚至超过500多个,文…

GPT-5对普通人有何影响

这篇文章对ChatGPT的使用方法和提问技巧进行了讨论,重点强调了背景信息和具体提问的重要性。文章清晰地传达了如何提高ChatGPT回答的质量,以及个人在使用ChatGPT时的体会和建议。然而,文章在逻辑组织和表达方面还有一些可以改进的地方&#x…

全局mixins

一、文章由来 在开发过程中发现在钩子函数位置直接使用dicts就能直接绑定数据了,由此溯源发现了自己的盲区 二、局部使用 // myMixin.js文件 var myMixin {created: function () {this.hello()},methods: {hello: function () {console.log(hello from mixin!)…

9 个让 Python 性能更高的小技巧,你掌握了吗?

我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。 今天就让我们一起来看下让 Python 性能更高的 9 个小技巧 python学习资料分享(无偿)…

【日常记录】【JS】SSE 流式传输 ChatGPT 的网络传输模式

文章目录 1、SSE 流式传输2、后端代码3、前端代码5、SSE和WS 对比6、chatgpt SSE的服务端返回的数据参考链接 单工通信是一种单向的通信方式,其中信息只能从发送端传输到接收端,而接收端不能向发送端发送任何信息。在Web开发中,Server-Sent E…

家用洗地机十大品牌什么牌子好用?2024十大爆款洗地机分享

在快节奏的生活中,清洁家居成为了一项繁琐却必不可少的任务。而洗地机的出现,无疑给忙碌的都市人带来了福音。选择一款优质的洗地机可以大大提升我们清洁的效率,改善我们的生活品质。那么,哪家洗地机清洁力最强,更适合…

头歌——机器学习——决策树案例

第1关:基于决策树模型的应用案例 任务描述 本关任务:使用决策树算法完成成人收入预测。 相关知识 为了完成本关任务,你需要掌握:1.数据特征处理,2.使用决策树算法完成成人收入预测。 数据处理及特征工程 本次任务…

T80005编码器操作说明书:高清HDMI,高清SDI编码器

T80005编码器操作说明书:高清HDMI,高清SDI编码器 T80005编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器

Grafana+Prometheus构建强大的监控系统-保姆级教程[监控linux、oracle]

什么是Grafana? Grafana是一个开源软件,拥有丰富的指标仪表盘和图形编辑器,适用Prometheus、Graphite、Elasticsearch、OpenTSDB、InfluxDB、redis。。。简单点说就是一套开源WEB可视化平台。通过对数据库数据二次提取,做出好看的…

240627_昇思学习打卡-Day9-ResNet50图像分类

240627_昇思学习打卡-Day9-ResNet50图像分类 文章目录 240627_昇思学习打卡-Day9-ResNet50图像分类前言残差网络Residual Block代码实现Bottleneck Block代码实现 BN层(Batch Normalization)构建ResNet50网络数据集准备与加载模型训练与评估可视化模型预…

什么是div移动指令?如何用vue自定义指令实现?

目录 一、Vue.js框架介绍二、vue自定义指令directive三、什么是div移动指令四、使用vue自定义指令directive写一个div移动指令 一、Vue.js框架介绍 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它设计得非常灵活,可以轻松地被集成到现有的项目中&#xf…

swiper轮播 loop:true失效解决

数据是写死的时候,能够loop:true是有效的;数据是动态获取的loop:true就会失效。 方法一:在接收到数据后,使用 setTimeout(() > {this.getSwiper(); //生成swiper方法}, 0); 下面是我项目具体使用的参考例子: 方法二&#xff…