Open zhayujie opened 1 year ago
效果图,以wechat通道为例:
画图:
图片内容:
接入了发个测试报告参观一下。 :)
发些截图我们参观一下
实测acs-token就几分钟存活期,不进行对话一会儿就失效了;得研究一下怎么获取acs-token
目前有解决办法了吗
真奇怪,我复制cookie进去一直报格式错误:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 6 column 1405 (char 1861)
真奇怪,我复制cookie进去一直报格式错误:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 6 column 1405 (char 1861)
去浏览器插件商店搜索“cookie editor”,使用这个插件导出cookie的json数据,然后自行使用python来包装
真奇怪,我复制cookie进去一直报格式错误:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 6 column 1405 (char 1861)
去浏览器插件商店搜索“cookie editor”,使用这个插件导出cookie的json数据,然后自行使用python来包装
可以了,不过acs-cookie好像是每加载一次就刷新一次,就算是最新的acs-cookie调用的时候也是提示500
真奇怪,我复制cookie进去一直报格式错误:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 6 column 1405 (char 1861)
去浏览器插件商店搜索“cookie editor”,使用这个插件导出cookie的json数据,然后自行使用python来包装
可以了,不过acs-cookie好像是每加载一次就刷新一次,就算是最新的acs-cookie调用的时候也是提示500
是的,所以难度很大,得破解计算方式
现在这个 acs-token 的过期时间太快了,几分钟就失效了。
只有一边等 API 开放试用, 一边逆向看下 acs-token 在 js 代码中的生成规则是什么
https://github.com/xw5xr6/revERNIEBot
这里有基于selenium的实现
现在这个 acs-token 的过期时间太快了,几分钟就失效了。
只有一边等 API 开放试用, 一边逆向看下 acs-token 在 js 代码中的生成规则是什么
貌似百度开放了文心一言的APIhttps://cloud.baidu.com/doc/WENXINWORKSHOP/s/flfmc9do2
from model.model import Model from config import model_conf from common import const from common.log import logger import requests import time import json
context=[]
class YiyanModel(Model): def init(self):
self.client_id = model_conf(const.BAIDU).get('client_id')
self.client_secret = model_conf(const.BAIDU).get('client_secret')
self.base_url = 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions'
self.access_token=self.get_access_token(self.client_id,self.client_secret)
self.params = {
"access_token": self.access_token
}
def get_access_token(self,client_id,client_secret):
client_id=str(client_id)
client_secret=str(client_secret)
url = "https://aip.baidubce.com/oauth/2.0/token?client_id=" + client_id + '&client_secret=' + client_secret + '&grant_type=client_credentials'
res = requests.request("POST", url, headers=self._create_header())
res_data = res.json()
access_token = res_data.get('access_token')
return access_token
def reply(self, query, context=None):
user_id = context.get('session_id') or context.get('from_user_id')
context['query'] = query
flag = self.new_chat(context)
if not flag:
return "创建会话失败,请稍后再试"
# 3.query
# self.query(context, 0, 0)
messages= self.query(context, 0, 0)
return messages
def new_chat(self, context):
data = {
"messages": [
{
"role": "user",
"content": "你现在是一个代码专家,帮我处理代码问题"
}
],
"session_id": "chat_session_id"
}
response=requests.post(url=self.base_url, headers=self._create_header(), json=data,params=self.params)
response=response.json()
context['messages']=response['result']
return context
def query(self, context, sentence_id, data):
data = {"messages": [
{"role": "user", "content": '你现在是一个代码专家,帮我处理代码问题'},
{"role": "assistant", "content": context['messages']},
{"role": "user", "content": context['query']},
]
}
# print(data)
response = requests.post(url=self.base_url, headers=self._create_header(), json=data,params=self.params)
response=response.json()
# print(response['result'])
if response['result'] != '':
# print(context)
# print(data['messages'])
data['messages'].append({"role": "assistant", "content": response['result']})
# print(data['messages'])
# print({"role": "assistant", "content": response['result']})
return response['result']
def _create_header(self):
headers = {'Content-Type': 'application/json;charset=utf-8'}
return headers
"baidu": {
"client_id": "",
"client_secret": "",
},
config.json里面把baidu的文件改成自己的API即可,这个API需要企业申请。
如果想改代码的朋友,可以联系我,我这有API提供测试
如果想改代码的朋友,可以联系我,我这有API提供测试
怎么跟你联系?
看上面有Python的了,再分享一个node.js的,BAIDU_API_URL是选模型的,ACCESS_TOKEN是千帆申请的就可以一个月有效了。(官方代码给的是request,但我接入用着报错,改成axios了可以正常使用
const axios = require('axios');
const messages = [ { "role": "user", "content": content }, ];
try {
const response = await axios.post(${BAIDU_API_URL}?access_token=${ACCESS_TOKEN}
, {
"messages": messages
}, {
headers: {
'Content-Type': 'application/json'
}
});
const responseData = response.data;
const responseMessage = responseData.result;
} catch ..........
acs_token和cookie都应该填什么呀?
地址: https://yiyan.baidu.com/
配置:
配置获取: 目前 Acs-Token 的有效期未知,待进一步优化: