使用api制作聊天机器人简单案例
使用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()`
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)