前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 AIGC 归纳一段新闻生成简报

使用 AIGC 归纳一段新闻生成简报

原创
作者头像
Jerry Wang
发布2024-04-15 19:12:09
1040
发布2024-04-15 19:12:09

在现在这个快节奏的时代,大家碎片化阅读的场景越来越普遍了。比如上下班乘坐地铁时,等待上车的间隙,也习惯掏出手机刷一刷新闻。

登录百度智能云的控制台,创建一个新的应用,把生成的 API Key 和 API Secret key 抄下来,因为后续换取 access token,需要用这两个字段去交换。

为了使用 AIGC 的思路来对新闻进行归纳,可以使用百度大模型 ERNIE-3.5-8K:

我的应用创建好之后,这个模型就自动配置到应用上了,如下图所示:

然后通过在线调试网页,可以简单熟悉一下这个模型通过 API 的消费方式。在右边随便输入一些文字,左边就能实时看到如何通过代码的方式,去组装这些输入,并发送请求的编写方法了,比较方便。

比如上图我们通过 JSON 格式,发送给 AIGC service provider 的 HTTP 请求 payload,格式如下:

代码语言:json
复制
{
    "messages": [
        {
            "role": "user",
            "content": "请介绍一下你自己"
        }
    ],
    "disable_search": false,
    "enable_citation": false
}

首先编写一段 Python 代码,根据 application 的 Client id 和 client secret,换取 access token.

因为是测试代码,我就直接将这两个 credentials,硬编码到代码里了。

代码语言:python
复制
import requests
import json


def main():
        
    url = "https://aip.baidubce.com/oauth/2.0/token?client_id=<clientID>&client_secret=<clientSecert>&grant_type=client_credentials"
    
    payload = json.dumps("")
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.text)
    

if __name__ == '__main__':
    main()

执行上述 python 代码后,我们将返回的 response 里包含的 access token 记录下来:

access token 默认的有效期是 30 天。

然后我们使用这个 access token,去消费百度智能云的 chat API.

我本人的工作习惯,一般是先在 Postman 里跑通,然后再编写代码。

Postman 的 API url:https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=xxx

HTTP 方法为 POST,payload 类型设置为 raw,格式从下拉菜单里选择成 JSON

json 内容:

代码语言:json
复制
{
    "messages": [
        {
            "role": "user",
            "content": "请你扮演一个资深的新闻记者,请你根据下面这段新闻的正文,提取出一篇300字左右的内容摘要:<这里是消息正文>"
        }
    ]
}

可以看到,在 JSON payload 的 messages 字段里,我硬编码了一个 Prompt:

请你扮演一个资深的新闻记者,请你根据下面这段新闻的正文,提取出一篇300字左右的内容摘要:<这里是消息正文>

点击 send 之后,从 Postman 里收到 HTTP 200 OK 的 status code,并且在 response 的 result 字段里,看到了 AIGC 为我们归纳好的新闻简报。

至此一个完整的流程在 Postman 里就跑完了。剩下的任务就简单了,将 Postman 里的操作翻译成 Python 代码即可。

代码如下:

代码语言:python
复制
import requests
import json

# API的URL,已包含access_token
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=<token>"

# 准备发送的数据
data = {
    "messages": [
        {
            "role": "user",
            "content": "请你扮演一个资深的新闻记者,请你根据下面这段新闻的正文,提取出一篇300字左右的内容摘要:a"
        }
    ]
}

# 将字典转换为JSON格式
json_data = json.dumps(data)

# 设置请求头
headers = {
    'Content-Type': 'application/json'
}

# 发送POST请求
response = requests.post(url, data=json_data, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
    # 解析响应内容
    response_data = response.json()
    # 打印结果字段
    if 'result' in response_data:
        print(response_data['result'])
    else:
        print("No 'result' field in response")
else:
    print(f"Failed to get response, status code: {response.status_code}")

这段代码完成了以下步骤:

  • 定义了API的URL,包括已经包含的access_token。
  • 创建了一个字典 data 包含请求需要的payload。
  • 将字典转换为JSON字符串。
  • 设置了HTTP头部,指明传输的数据类型为JSON。
  • 使用requests.post方法发送请求。
  • 检查响应的状态码,并从JSON响应中解析并打印出 result 字段。

确保在执行此脚本前,网络可以正常访问 API 地址,并且 access_token 有效。

在控制台上执行上面的代码,成功得到新闻的摘要输出:

当然,在实际使用过程中,我们也会遇到 Access Token 过期的情况。在这种情况下,需要另起一个 HTTP 请求,先去刷新 Access Token:

代码语言:python
复制
import requests
import json

def get_new_access_token():
    # 假设用 client_id 和 client_secret 来获取新的 access token
    url = "https://aip.baidubce.com/oauth/2.0/token"
    payload = {
        'grant_type': 'client_credentials',
        'client_id': 'YOUR_CLIENT_ID',  # 替换为实际的 client_id
        'client_secret': 'YOUR_CLIENT_SECRET'  # 替换为实际的 client_secret
    }
    response = requests.post(url, data=payload)
    if response.status_code == 200:
        token_data = response.json()
        return token_data['access_token']
    else:
        raise Exception("Failed to retrieve new access token")

def send_post_request(access_token):
    url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={access_token}"
    data = {
        "messages": [
            {
                "role": "user",
                "content": "请你扮演一个资深的新闻记者,请你根据下面这段新闻的正文,提取出一篇300字左右的内容摘要"
            }
        ]
    }
    json_data = json.dumps(data)
    headers = {'Content-Type': 'application/json'}
    response = requests.post(url, data=json_data, headers=headers)
    return response

# 尝试发送请求
response = send_post_request(access_token)

# 检查是否因为 Token 过期而失败
if response.status_code == 401:  # 假设401代表Token过期
    access_token = get_new_access_token()  # 获取新的Token
    response = send_post_request(access_token)  # 用新Token重新发送请求

# 处理响应
if response.status_code == 200:
    response_data = response.json()
    if 'result' in response_data:
        print(response_data['result'])
    else:
        print("No 'result' field in response")
else:
    print(f"Failed to get response, status code: {response.status_code}")

在上面这段脚本中,我们首先尝试发送请求。如果响应状态码为401,这是因为 Access Token 过期,然后调用 get_new_access_token 函数获取新的 Access Token,之后重新发送请求。这个方法假设大家有适当的 API 信息和权限来请求新的 Access Token。

确保在实际部署这段代码之前,我们需要替换 YOUR_CLIENT_IDYOUR_CLIENT_SECRET 为实际 API credential.

当然,使用 AIGC 进行新闻摘要归纳的 API 有很多,大家在开发过程中可以根据自己的实际情况进行灵活地选择。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com