AI大模型开发——7.百度千帆大模型调用

人生百态,人生如梦 2024-08-29 15:31:31 阅读 87

        本节旨在为读者提供一个实用指南,探讨如何有效地利用百度千帆大模型平台的强大功能。从基础的账号注册和密钥申请入手,逐步引领用户通过案例, 理解并掌握如何调用文本和图像处理的大模型 API, 包括但不限于 NLP、对话生成、文本续写以及图像生成等领域。

1.千帆大模型平台简介

        在 AI蓬勃发展的时代, 大模型平台作为支撑大规模数据处理和复杂模型训练的基石, 正逐渐成为推动科技创新和产业升级的重要力量。千帆大模型平台, 凭借其卓越的性能、灵活的应用和强大的生态系统,已成为众多企业和研究机构首选的大模型解决方案。

        千帆大模型平台是一个集数据处理、模型训练、推理部署于一体的综合性平台,它提供了丰富的算法库和工具集, 支持多种深度学习框架, 能够轻松应对各种复杂的数据处理和模型训练任务。平台采用分布式计算架构,能够充分利用多节点计算资源, 以实现高效的大规模数据训练和推理。

        千帆大模型平台具备以下核心特性。

        (1)高效性:平台采用先进的算法优化和并行计算技术, 能够显著提升模型训练速度和推理性能。

        (2)灵活性:平台支持自定义模型开发和训练, 用户可以根据具体需求选择合适的算法和参数进行模型调优。

        (3)易用性:平台提供了简洁直观的图形化界面和友好的API接口, 降低了用户的使用门槛。同时, 平台还提供了详细的文档和教程, 可帮助用户快速上手并充分利用平台功能。

        (4)安全性:平台采用了严格的数据加密和访问控制机制, 可确保用户数据的安全性和隐私性。

        千帆大模型平台广泛应用于NLP、计算机视觉、语音识别等领域,为众多行业提供了强大的智能支持。例如, 在NLP领域, 千帆大模型平台可以帮助企业构建智能客服、机器翻译等应用;在计算机视觉领域,千帆大模型平台可以用于图像识别、目标检测等任务;在语音识别领域,千帆大模型平台可以实现高精度的语音转写和识别功能。

2.第一个大模型调用

2.1 注册并申请密钥

(1)访问官网:

百度智能云-云智一体深入产业 (baidu.com)

(2)注册或登录账号

(3)点击控制台

(4)进入控制台详情页,并进入百度智能云千帆大模型平台。

(5)进入创建应用界面后,点击进入“应用接入”界面。

(6)应用配置。点击“去创建”进入应用配置界面。

2.2 开启千帆大模型 API调用

        百度智能云千帆平台提供了丰富的API, 包括对话 Chat、续写 Completions、向量 Embeddings、插件应用、提示工程、模型服务、管理、调优及数据管理等API能力。本小节以调用一个对话 Chat流程进行说明。

        (1) 创建应用。创建应用的操作已经在3.2.1小节中完成, 无须再次操作。

        (2) API授权。创建应用的时候平台自动授权, 无须操作。

        (3) 获取接口访问凭证 access _ token。使用在3.2.1 小节获取的API Key 和 Secret Key, 调用获取 access _ token 接口获取 access _ token, 通过 access _ token 鉴权调用者身份。

获取 access _ token接口的 Python版本代码如下。

<code>import json

import requests

def main():

url = 'https://aip.baidubce.com/oauth/2.0/token'

payload = {

'client_id': 'XXX', # 请替换为您的 client_id

'client_secret': 'XXX', # 请替换为您的 client_secret

'grant_type': 'client_credentials'

}

# 发送表单数据

response = requests.post(url, data=payload)

# 打印状态码和响应内容

print("Status Code:", response.status_code)

print("Response Text:", response.text)

# 尝试解析 JSON 响应

try:

return response.json().get('access_token')

except json.JSONDecodeError:

print("Failed to decode JSON response")

return None

if __name__ == "__main__":

access_token = main()

print(access_token)

        如果上述代码提示ModuleNotFoundError: No module named ' requests'错误, 表示需要激活自己的 Anaconda 环境并安装 requests模块, 后续需要导入新的模块时也是同样的操作。

#创立环境

conda create -n qf python=3.9

#启动环境

conda activate qf

#安装库

conda install json

conda install requests

        上述代码结果如下:

D:\ana\envs\aidmxkf\python.exe D:\pythoncode\qf\ceshi\access_token.py

Status Code: 200

Response Text: {"refresh_token":。。。。。省略"}

24.961083b29e9929a06e0e0a02634358bb.2592000.1726919603.282335-106272499

      (4)调用API接口。ERNIE- Bot-4是百度自行研发的大语言模型, 覆盖海量中文数据, 具有更强的对话问答、内容创作生成等能力。本文以调用ERNIE- Bot-4模型接口为例进行说明。调用接口代码如下。

import requests

import json

API_KEY = "XXX" #填本人的API_KEY

SECRET_KEY = "XXX" #填本人的SECRET_KEY

def main():

url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=" + get_access_token()

payload = json.dumps({

"messages": [code>

{

"role": "user",

"content": "假设你是个程序员,你的微信是llike620,我的问题是:你的微信"

}

]

})

headers = {

'Content-Type': 'application/json'

}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

def get_access_token():

"""

使用 AK,SK 生成鉴权签名(Access Token)

:return: access_token,或是None(如果错误)

"""

url = "https://aip.baidubce.com/oauth/2.0/token"

params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}

return str(requests.post(url, params=params).json().get("access_token"))

if __name__ == '__main__':

main()

        (5)获取返回结果。如果成功调用这个接口, 就可以得到一个 json格式的返回信息,如下所示。

D:\ana\envs\aidmxkf\python.exe D:\pythoncode\qf\ceshi\ernit_bot_4.py

{"id":"as-cyfjqg90hk","object":"chat.completion","created":1724328836,"result":"非常感谢你的提问,我是程序员llike620,我的微信是llike620,非常欢迎你通过微信联系我,随时欢迎向我提问。","is_truncated":false,"need_clear_history":false,"usage":{"prompt_tokens":19,"completion_tokens":34,"total_tokens":53}}

进程已结束,退出代码为 0

        result所返回的字段就是对问题的回答内容。通过以上步骤就可以成功调用一个大模型 API 了。

2.3 开启千帆大模型 SDK 调用

        SDK 调用是使用软件开发工具包( Software Development Kit) 中提供的函数或对象来访问服务, 通常提供更简洁、更高级的编程接口, 可简化开发过程。API调用是直接通过网络请求与应用程序编程接口( Application Programming Interface) 交互, 需要手动构建请求和处理响应, 适用于没有 SDK 或特定语言支持的情况。

        通常情况下,一般使用SDK 调用, 这里演示如何使用SDK 调用百度大模型。

        SDK调用主要包括三个步骤:首先是安装SDK, 然后进行认证, 最后通过调用SDK 提供的接口来实现特定功能。

        (1)安装SDK。

 pip install qianfan

        注意:目前支持 Python 3.7 及以上的版本。

        (2)应用AK/SK鉴权。千帆平台提供了两种鉴权方式。调用的API不同, 使用的鉴权方式也可能不同。开发者可以根据实际使用, 选择合适的方式进行调用。

        推荐使用安全认证AK/SK鉴权调用流程。

        1)登录百度智能云千帆控制台。登录百度智能云千帆控制台, 单击“用户账号”→“安全认证”按钮进入 Access Key管理界面。

        2)查看安全认证 Access Key/ Secret Key。在安全认证/ Access Key 界面, 查看 Access Key、 Secret Key, 如下所示。

(3) 调用大模型 ERNIE- Bot- turbo。

<code>import qianfan

import os

# 使用安全认证AK/SK鉴权, 通过环境变量方式初始化; 替换下列示例中的参数, 安全认证 Access Key替换 your _ iam _ ak, Secret Key替换 your _ iam _ sk

os. environ["QIANFAN_ACCESS_KEY"] = " your _ iam _ ak"

os. environ["QIANFAN_SECRET_KEY"] = " your _ iam _ sk"

chat_cump=qianfan.ChatCompletion()

resp=chat_cump.do(

messages =[

{

"role": "user",

"content": "你好"

}

]

)

print(resp.body)

        可以将QIANFAN_ACCESS_KEY和QIANFAN_SECRET_KEY设置为系统的环境变量,这样就不必在每次调用时手动填写这些密钥了。

        上述代码输出如下所示。

D:\ana\envs\aidmxkf\python.exe D:\pythoncode\qf\ceshi\SDK.py

{'id': 'as-r77v0mef5q', 'object': 'chat.completion', 'created': 1724329870, 'result': '你好!有什么需要我帮助的吗?', 'is_truncated': False, 'need_clear_history': False, 'usage': {'prompt_tokens': 1, 'completion_tokens': 8, 'total_tokens': 9}}

进程已结束,退出代码为 0

        其中, result部分代表大模型的回答内容。

3. 百度文本大模型API

        本节将探索百度千帆大模型平台提供的文本大模型API, 这些 API为开发者打开了利用先进NLP技术的大门。首先从对话 Chat大模型开始, 了解如何实现流畅的自然语言对话;接着, 探讨续写 Completions功能, 展示如何自动完成或扩展文本内容;最后, 通过文心 ERNIE- Bot-4 模型景点推荐实践, 展示如何将这些技术应用于具体的业务场景, 为用户提供个性化推荐。

3.1 对话 Chat大模型

        百度智能云千帆大模型平台提供了对话 Chat相关模型 API SDK, 它支持单轮对话、多轮对话、流式等调用方式。

        下面分别三种对调用方式。

1. 单轮对话调用。

        使用model字段,指定千帆平台支持预置服务的模型,调用示例如下:(以后自动替换自己内容)

import qianfan

import os

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

chat_cump=qianfan.ChatCompletion()

resp=chat_cump.do(

model="ERNIE-Bot",code>

messages =[

{

"role": "user",

"content": "你好"

}

]

)

print(resp.body)

2. 多轮对话调用

        多轮对话需要修改messages消息,里面是多个对话消息,如下所示。(千帆大平台中message只能说单数信息)

import qianfan

import os

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

chat_cump=qianfan.ChatCompletion()

resp=chat_cump.do(

messages =[

{

"role": "user",

"content": "你好"

},

{

"role": "assistant",

"content": "你好!很高兴与你交流。请问你有什么需要我帮助解答的问题吗?"

},

{

"role": "user",

"content": "我在做一个基于大数据的应用,需要找到一个合适的机器学习算法。"

}

]

)

print(resp.body)

3.流式调用

        流式调用对话修改stream的值为True,默认是False,如下所示。

import qianfan

import os

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

chat_cump=qianfan.ChatCompletion()

resp=chat_cump.do(

model="ERNIE-Bot-turbo",code>

messages =[

{

"role": "user",

"content": "你好"

}

],

stream=True

)

for chunk in resp:

print(chunk.body)

3.2 续写Completions

        千帆SDK支持调用续写Completions相关API,支持非流式、流式调用。下面分别介绍两种调用方式。

1.流式调用

        同Chat大模型的区别是,这里获取的是Completion。

import qianfan

import os

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

cump=qianfan.Completion()

resp=cump.do(prompt="你好")code>

print(resp)

2.非流式调用

        同Chat大模型流式调用一样,也是设置stream=True。

import qianfan

import os

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

cump=qianfan.Completion()

resp=cump.do(model="ERNIE-Bot",prompt="你好",stream=True)code>

for line in resp:

print(line)

3.3 文心 ERNIE- Bot-4 景点推荐实践

        这里将通过一个实际案例展示如何使用百度的ERNIE- Bot-4模型接口, 实现一个旅游景点推荐系统。这个系统能够根据用户的偏好和需求,智能推荐合适的旅游景点。通过该案例, 用户将学习如何与 ERNIE- Bot-4模型交互, 以及如何处理和利用模型生成的数据来提供个性化的服务。

        首先, 需要准备与ERNIE- Bot-4模型交互所需的环境和库。同时需要AK/SK鉴权, 并安装 Python环境和必要的库。下面是一个基础的代码示例,用于初始化百度客户端并设置好AK/SK。

        接下来, 定义一个函数 get _ travel _ recommendations, 该函数接收用户的输入作为参数, 并使用ERNIE- Bot-4模型生成旅游景点的推荐。用户输入包括对旅游地点的偏好(如自然风光、历史遗迹、城市探索等)、旅行时间和预算等信息。

        在该函数中, 将用户的输入格式化为一个提问, 并请求 ERNIE- Bot-4模型生成相关的旅游景点推荐及推荐理由。 top _p参数设置输出文本的多样性, 而 temperature参数控制输出的创造性程度。

        现在来模拟一个用户输入, 并看看模型的输出结果。

import qianfan

import os

# 设置环境变量

os.environ["QIANFAN_ACCESS_KEY"] = ""

os.environ["QIANFAN_SECRET_KEY"] = ""

def get_travel_recommendations(user_input):

# 创建Completion对象

comp = qianfan.Completion()

# 调用API获取推荐

response = comp.do(

method="EBNIE-Bot-4", # 假设这是API的正确方法名code>

prompt=f"根据以下用户偏好推荐旅游景点:\n{user_input}\n推荐理由:",

temperature=0.7,

top_p=1

)

# 从响应中提取推荐结果

recommendations = response.body["result"] # 假设response.body是正确的方法来获取结果

return recommendations

# 假设user_input是一个字符串变量,包含用户的偏好

user_input = ("""

偏好:历史遗迹和文化体验

旅行时间:2023年4月

预算:中等

""")

recommendations = get_travel_recommendations(user_input)

print(recommendations)

        上述代码结果如下。

D:\ana\envs\aidmxkf\python.exe D:\pythoncode\qf\diaoyong\jingdiantuijian.py

根据您的偏好、旅行时间和预算,我为您推荐以下几个旅游景点,以体验历史遗迹和文化体验:

1. 故宫博物院 - 北京

作为中国最著名的历史遗迹之一,故宫博物院是您不容错过的目的地。这里收藏了丰富的文物和艺术品,您可以深入了解中国的历史和文化。在4月的春季,北京的气候宜人,非常适合游览。

2. 西安古城墙与兵马俑 - 西安

除了故宫外,西安也是一个充满历史气息的城市。您可以参观古城墙,感受古城的韵味,同时还可以前往兵马俑博物馆,领略古代的战争场面和精美雕刻艺术。这两个景点的票价较为中等,适合您的预算。

3. 苏州园林 - 江苏

如果您对中国的古典园林文化感兴趣,那么苏州园林是您不可错过的景点。这里的园林以水景、假山、古建筑等元素构成,营造出一种宁静、优雅的氛围。在游览园林的同时,您还可以了解苏州的历史和文化。

4. 乌镇 - 浙江

乌镇是一个有着千年历史的古镇,这里保存了大量古建筑和传统手工艺品制作技艺。漫步在古色古香的街道上,您可以感受到浓厚的历史气息和独特的文化氛围。此外,您还可以品尝到当地的美食和购买纪念品。

以上是我为您推荐的旅游景点,它们都充满了历史和文化气息,非常适合您进行一次文化体验之旅。在旅行前,建议您提前了解各个景点的开放时间、门票价格等信息,并做好行程规划。祝您旅途愉快!

进程已结束,退出代码为 0

        通过该案例, 展示了如何利用ERNIE- Bot-4模型的强大能力来实现个性化的旅游景点推荐。用户可以根据实际需求调整提问的内容和格式,以及输出结果的处理方式, 从而开发出更加丰富和实用的应用。

4 图像 Images API

        下面将带领用户探索百度千帆大模型平台提供的图像 ImagesAPI,揭示如何将最新的图像生成技术应用于实际项目中。从 Stable Diffusion XL 这一强大的图片生成模型开始, 学习如何创造出令人印象深刻的视觉内容。随后,介绍 Fuyu-8B 图片视觉模型的应用, 展现其在图像理解和处理方面的能力。最终, 通过 Stable Diffusion XL 生成电商图片的实践案例, 向读者展示如何将这些先进技术转化为商业价值。

4.1 图片生成模型 Stable Diffusion XL

         Stable Diffusion XL 模型是一种深度学习模型, 是 Stable Diffusion 模型的扩展版本, 专为生成高分辨率和高质量的图像而设计。该模型使用了更大的网络架构和更多的训练数据,从而能够产生更细致和真实的图像。 Stable Diffusion XL 通过对大量图像数据进行学习, 可以理解复杂的视觉内容和风格,使其在艺术创作、游戏开发、视觉内容生成等领域具有广泛的应用潜力。与原始的 Stable Diffusion 模型相比, XL 版本通过增强的模型容量和优化的生成策略, 能够处理更复杂的图像生成任务, 提供更高质量的输出结果。

        下面介绍如何基于百度API 使用 Stable Diffusion XL。

import os

import qianfan

import io

from PIL import Image

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

t2i=qianfan.Text2Image()

resp=t2i.do(

prompt="A Ragdoll cat with a bowtie",code>

with_decode="base64",code>

model="Stable-Diffusion-XL",code>

)

img_data=resp["body"]["data"][0]["image"]

img=Image.open(io.BytesIO(img_data))

img.show()

        上面这段代码通过千帆的Text2Image API 生成一个基于文本提示"A Ragdoll cat with a bowtie."的图像, 并显示该图像。

        返回输出结构如下:

QfResponse( code=200,headers={…},

body={' created': 1111,

'data': [{'b64_ image': ' xxxxxx',

'image': ' xx',

'index': 1,

'object': ' image'}],

'id': ' as- xxx',

'object': ' image',

'usage': {' prompt _ tokens': 28, ' total _ tokens': 28}})

        输出是一个 QfResponse响应对象, 包含状态码200、头部信息和正文内容, 正文包括创建时间、图片数据列表、响应 ID、对象类型和使用详情。

        下面接着查看输出图片效果:

        图片显示场景和实际输入文字是匹配的, 总体效果还是不错的。

4.2 图片视觉模型 Fuyu-8B

        Fuyu-8B模型是一个基于深度学习技术的图像识别与处理模型。它采用了先进的神经网络架构, 通过大量的图像数据进行训练, 使得模型能够学习到图像中的复杂特征和模式。该模型以其高效、准确和稳定的性能而受到广泛关注。

        Fuyu-8B模型被广泛应用于多个领域。例如, 在医学影像分析领域, 该模型可以辅助医生进行疾病的诊断和治疗方案的制定。在自动驾驶领域, Fuyu-8B模型可以识别道路标志、行人、车辆等关键信息,以提高自动驾驶系统的安全性和可靠性。此外, 该模型还可用于安防监控、人脸识别、智能相册管理等领域。

        下面将基于 Fuyu-8B 演示, 根据用户输入的图片和请求信息, 来返回用户想要得到的图片中的信息。

        下面代码主要是使用上个图, 并将结果输出到控制台:

<code>import os

import qianfan

import base64

from qianfan.resources import Image2Text

# 设置 QIANFAN API 的访问密钥

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

# 请替换图片对应的路径地址

with open(r"D:\pythoncode\qf\tupianAPI\8.png", "rb") as image_file:

encoded_string = base64.b64encode(image_file.read()).decode()

# 使用model参数

i2t = Image2Text(model="Fuyu-8B")code>

resp = i2t.do(prompt="分析一下图片画了什么", image=encoded_string)

print(resp["result"])

        上述代码结果如下:

D:\ana\envs\aidmxkf\python.exe D:\pythoncode\qf\tupianAPI\Fuyu-8B.py

The image features a colorful illustration of a cat with a red bow tie. The cat ' s eyes are closed, and it appears to be wearing a bow tie, adding a touch of whimsy to the scene.

进程已结束,退出代码为 0

4.3 Stable Diffusion XL 生成商品图片实践

        下面将通过一个实际操作,演示如何将用户提供的中文商品关键词转化为细致、全面的英文商品描述, 随后利用这个描述通过 Stable Diffusion XL 模型接口生成对应的产品图片。

        此过程包括两个主要步骤:①根据用户输入的中文关键词生成详细的英文商品描述;②使用这个描述生成商品图片。

        用户通过某个电商平台的界面输入一组中文关键词, 代码的目标是基于这些关键词自动生成对应商品的英文描述, 然后根据描述生成商品图片。以下是整个过程的代码实现。

import os

import qianfan

from PIL import Image

import io

os.environ["QIANFAN_ACCESS_KEY"] =""

os.environ["QIANFAN_SECRET_KEY"] =""

# 创建 Completion 和 Text2Image 的实例

comp = qianfan.Completion()

t2i = qianfan.Text2Image()

# 用户输入中文商品描述

user_keywords =input("请输入中文商品描述:")

# 调用 Completion API 生成英文商品描述

resp_desc = comp.do(

prompt=f"根据以下中文关键词生成详细的英文商品描述(请限制在250个单词以内): {user_keywords}\n\nKeywords: {user_keywords}\nEnglish Description:",

)

# 获取英文描述

english_description = resp_desc.body["result"]

print(english_description)

# 调用 Text2Image API 生成基于英文描述的图片

resp_img = t2i.do(

prompt=f"A product image based on the following description: {english_description}.",

with_decode="base64"code>

)

# 获取 Base64 编码的图像数据

img_data = resp_img["body"]["data"][0]["image"]

# 解码 Base64 图像数据

img = Image.open(io.BytesIO(img_data))

img.show()

        在上述代码中, 首先输入的中文关键词“时尚、简约、木质书桌”,接着调用 CompletionAPI根据这些关键词生成一段详细的英文商品描述。生成的英文描述被用作Text2Image接口的输入, 指导模型生成与描述相匹配的商品图片。

        代码的效果如下所示。

D:\ana\envs\aidmxkf\python.exe D:\pythoncode\qf\tupianAPI\StableDiffusionXL2.py

请输入中文商品描述:时尚、简约、木质书桌

This sleek and modern wooden desk embodies the essence of fashion and simplicity. Designed with a minimalist aesthetic, its clean lines and smooth edges exude a sense of elegance and sophistication. Made from high-quality wood, the desk is both sturdy and durable, ensuring long-lasting use. Its sleek design complements any home or office decor, making it a must-have addition to any space. This wooden desk offers ample storage space for all your essentials, while its modern look and simple style make it a perfect fit for those who appreciate a minimalist lifestyle. A must-have for those seeking a stylish and functional piece of furniture, this wooden desk is an excellent blend of fashion and simplicity.

进程已结束,退出代码为 0

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        从上方可以看出, 整体效果还是不错的。

        此实践案例展现了如何结合文本生成和图片生成接口, 依据简单的用户输入自动化地产出高质量的商品内容, 从而降低内容创作成本, 提高效率, 并且增强电商平台的用户体验。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。