nonebot2 Sky—ChatAI模型
目录
账号准备:
先进入天工开放平台官网:天工开放平台
进入后先注册好个人账号(要实名认证)
如图
可见有四个可用的模型,本文章只讲模型Sky-Chat,跳转到“接口调用案例”可见基本py代码。上面写了具体参数和返回内容案例。(先来看官方给的代码)
# -*- coding: utf-8 -*-
import requests
import time
import hashlib
import json
url = 'https://{API_HOST}/saas/api/v4/generate'
app_key = 'YOUR_APP_KEY' # 这里需要替换你的APIKey
app_secret = 'YOUR_APP_SECRET' # 这里需要替换你的APISecret
timestamp = str(int(time.time()))
sign_content = app_key + app_secret + timestamp
sign_result = hashlib.md5(sign_content.encode('utf-8')).hexdigest()
# 设置请求头,请求的数据格式为json
headers={
"app_key": app_key,
"timestamp": timestamp,
"sign": sign_result,
"Content-Type": "application/json",
"stream": "true" # or change to "false" 不处理流式返回内容
}
# 设置请求URL和参数
data = {
"messages": [
{
"role": "system",
"content": "你的名字叫做小奇,是一个智能AI助手"
},
{
"role": "user",
"content": "给我一个赚取10w的方法"
}
],
"model": "SkyChat-MegaVerse"
}
# 发起请求并获取响应
response = requests.post(url, headers=headers, json=data, stream=True)
# 处理响应流
for line in response.iter_lines():
if line:
# 处理接收到的数据
print(line.decode('utf-8'))
需要修改部分:
- API_HOST
- APIKey
- APISecret
- 触发方式以及需要发送内容
- data内部
- 最后的发送代码
以下代码是复制的我机器人的另一个指令代码,所以能用但是没有去纠察有什么不方便或需要修改的地方了(自己可以改,注意该导入的模块都要导入)
tiangong = on_command('天工')
@tiangong.handle()
async def _handle(matcher: Matcher, naka: Message = CommandArg()):
if naka.extract_plain_text():
matcher.set_arg('naka', naka)
@tiangong.got('naka', prompt='提示信息')
async def _(naka: str = ArgPlainText('naka')): # -*- coding: utf-8 -*-
url = 'https://sky-api.singularity-ai.com/saas/api/v4/generate'
app_key = '替换部分' # 这里需要替换你的APIKey
app_secret = '替换部分' # 这里需要替换你的APISecret
timestamp = str(int(time.time()))
sign_content = app_key + app_secret + timestamp
sign_result = hashlib.md5(sign_content.encode('utf-8')).hexdigest()
# 设置请求头,请求的数据格式为json
headers={
"app_key": app_key,
"timestamp": timestamp,
"sign": sign_result,
"Content-Type": "application/json",
"stream": "true" # or change to "false" 不处理流式返回内容
}
# 设置请求URL和参数
data = {
"messages": [
{
"role": "system",
"content": "人设"
},
{
"role": "user",
"content": f"{naka}"
}
],
"model": "SkyChat-MegaVerse"
}
response = requests.post(url, headers=headers, json=data, stream=True)
all_replies = "" # 初始化一个空字符串用于存储所有的reply值
for line in response.iter_lines():
if line:
response_json = line.decode('utf-8')
response_data = json.loads(response_json)
try:
reply = response_data['resp_data']['reply']
all_replies += reply # 将新的reply值附加到all_replies字符串上
except KeyError as e:
print(f"Error extracting 'reply': {e}")
# 当所有reply都已读取后,发送合并后的字符串
await tiangong.send(all_replies) # 发送合并后的回复
注意事项:
API_HOST 在文档重要参数里有写,是sky-api.singularity-ai.com,替换至代码部分即可。APIKey和APISecret在个人中心的账户管理会给你一个(要先注册实名)替换至代码即可。
以上代码“人设”部分,用于写自己想要机器人的人设,可以去B站照抄(这个模型我觉得不是很好的原因是因为一旦用到搜索功能就会把人设忘的一干二净,也有可能是我的人设写的不好)
最后一段发送代码有很大区别的原因是:原代码返回的是由一堆json构成的字典,此时,你要把所有resp_data.reply里的字符都放入一个字符串再输出,代码部分照抄就行(不好好看参数文档的后果就是我这样)
其他具体需要修改的参数还请自行查看官方文档,文章开头的那个网站就有
使用教程:
先输入指令“/天工”(可以自己改指令名,或设置成关键词,或者不got,直接后文去除前触发关键词等都行)。got的内容会存入“naka”中,(prompt里放提示信息,即指令调出AI之后会发送的提示信息,具体效果看本文章效果演示)替换掉data中本该发送的内容。此时你会发现发送的内容是“余额不足”,此时就需要你去官网充值了,各个模型具体价目表如下:

效果展示:

缺点:
难以达到前后文记忆的功能,有想过开一个新的json或者全局变量去存储前几句,并在某次数之内提前发送处理,但很明显我搞不明白。有没有大佬可以去研究一下
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)