使用api制作聊天机器人简单案例:

例如:`# -- coding: utf-8 --
“”"
Created on Sat Dec 16 19:01:14 2023

@author: 14380
“”"

import requests
import json
import re

#导入requests库,用于发送HTTP请求和处理响应。
#在Python中,通常使用json库来处理API接口返回的数据,或者将数据存储到文件中。

API_KEY = “hOftIx7ZibDns1ghxAihgb1R”
SECRET_KEY = “sS2uyGH0LL4ChH7G8Rlj8aLeueiGFSKm”

#它们是用于百度AI平台认证的凭证

def get_access_token():
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”))

#函数 get access token() 是要从百度AI平台获取访问令牌(access token),以便在后续的请求中使用。
#函数analyze_sentiment就是用于情感分析的

def analyze_sentiment(text):
url = “https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?access_token=” + get_access_token()

#构建请求URL

payload = "{\"text\":\"" + text + "\"}"
payload_bytes = payload.encode('utf-8')

#payload 的作用就是将待分析的文本信息传递给 API,以便 API 进行情感分析并返回分析结果。

headers = {
    'Content-Type': 'application/json'
}

#headers这段代码是在设置 HTTP 请求头部信息,请求头部是发送给服务器的附加信息,用于告知服务器如何处理请求和响应。
#Headers作为请求头,按照HTTP请求格式的规范,应该放在请求体前面。但请求其实可以被服务器正确处理,
#如果希望代码更加符合 HTTP 协议的规范和通用的编程风格,可以将 headers 放在 payload 之前。

response = requests.request("POST", url, headers=headers, data=payload_bytes)
print(response.text)

#requests 库发送 HTTP 请求,并获取 API 的响应结果。
#将构建好的请求发送给 API,然后获取并打印出 API 返回的情感分析结果。
#这是一段有异常处理的逻辑块。解析从API返回的情感分析结果。
#从获取的情感分析结果中提取情感值(sentiment)和积极概率(positive_prob)。

try:
    res = json.loads(response.text)
    sentiment = res['items'][0]['sentiment']
    positive_prob = res['items'][0]['positive_prob']
#使用条件判断语句
    if sentiment == 0 and positive_prob < 0.5:
        return "别难过"
    else:
        return "希望你天天开心"
except Exception as e:
    print('Error!')
    print(e)
    return "情感分析失败"

#如果发生异常,即在解析 JSON 数据或获取情感分析结果时出错,
#将会进入 except 块。在此块中,会打印错误信息并返回字符串 “情感分析失败”。
#用了百度云unit云端平台的对话机器人尝试

定义一个函数用于获取新闻

def get_news():
# 创建一个字典,向网站发起请求时的一个常见头信息
h1 = {
‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15’,
}

# 设置请求的URL 
url = 'https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc'  
  
# 发起请求 
r = requests.get(url, headers=h1)  
  
# 打印请求的状态码 
print(r.status_code)  
  
# 将返回的响应内容解析为JSON格式  
json_data = r.json()  
  
# 获取新闻数量
data_num = len(json_data['data'])  
  
# 打印新闻的数量  
print('数量:', data_num)  
  
# 初始化列表,用于存储新闻相关信息 
title_list = []  
value_list = []  
url_list = []  
category_list = []  
label_list = []  
  
# 遍历获取的JSON数据中的每条新闻  
for data in json_data['data']:    
    title = data['Title']  
    print('热榜标题:', title)  
    title_list.append(title)   
      
    value = data['HotValue']  
    print('热度值:', value)  
    value_list.append(value)  
      
    try:  
        category = data['InterestCategory']  
        category = '/'.join(category)  
        print('分类:', category)  
    except:   
        category = ''  
        print('分类:无')  
    category_list.append(category)   
      
    # 提取新闻的标签  
    label = data['Label']  
    print('标签:', label)  
    label_list.append(label)  
      
    # 提取新闻的链接,这里使用正则表达式匹配URL中的数字部分,并添加前缀链接  
    url2 = data['Url']  
    match = re.search(r"(?<=https:\/\/www\.toutiao\.com\/trending\/)\d+", url2)  
    if match is not None:   
        url3 = match.group(0)   
        print('链接:', 'https://www.toutiao.com/trending/' + url3)  
    else:  
        url3 = "No match found"  
        print('链接:未找到')  
    # 将链接转换为字符串格式并存储
    url4 = 'https://www.toutiao.com/trending/' + str(url3)   
    # 将链接添加到列表中
    url_list.append(url4)    

定义一个输入函数

def chat_bot():
while True:
user_input = input("哈喽有什么想跟我聊聊的吗: ")
# 如果用户输入中包含“新闻”这个词
if “新闻” in user_input:
get_news()

    else:
        result = analyze_sentiment(user_input)
        print(result)

chat_bot()`

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐