Dreamily API

From Caiyun Wiki
Revision as of 08:32, 1 April 2021 by Chaosconst (talk | contribs)
Jump to: navigation, search

大家好,在这里介绍彩云小梦 API 的调用。

  • 账户注册:通过 http://if.caiyunai.com/dream 注册一个彩云小梦的普通用户
  • 注册完成后:在 chrome 浏览器地址栏输入(其中前缀 javascript 需要单独复制):javascript:alert(localStorage.cy_dream_user),得到你的uid

python版本

colab链接:https://colab.research.google.com/drive/1Ha0IEOm-VoPu6DbtbUkuYE5HycdfQ9Ax?usp=sharing

def write(title, content):
    global nid

    import requests
    import json
    
    url = "http://if.caiyunai.com/v1/dream/"
    
    #WARNING, this should be replaced by your uid
    UID = 你刚才得到的UID


    #创建文章,如果已经创建过就使用之前的文章id

    try:
    
        payload = {
                "content" : content, 
                "title" : title,
                "nid": nid,
               }

    except:

        payload = {
                "content" : content, 
                "title" : title,
               }


        response = requests.request("POST", url+UID+"/novel_save", data=json.dumps(payload))

        nid = json.loads(response.text)['data']['nid']

    #选择模型

    #小梦0号:60094a2a9661080dc490f75a
    #小梦1号:601ac4c9bd931db756e22da6
    #纯爱:601f92f60c9aaf5f28a6f908
    #言情:601f936f0c9aaf5f28a6f90a
    #玄幻:60211134902769d45689bf75

    #我们在本文例子里,选“小梦0号“
    mid="60094a2a9661080dc490f75a"

    #发起续写

    payload = {
            "content" : content, 
            "title" : title,
            "mid": mid,
            "nid": nid
            }

    response = requests.request("POST", url+UID+"/novel_ai", data=json.dumps(payload))

    try:
        xid=json.loads(response.text)['data']['xid']
    except:
        print(response.text)
        return;
        
    #等待结果
    import time

    while True:

      time.sleep(1) 

      #获取结果
      payload = {
              "xid": xid,
              "nid": nid
              }

      response = requests.request("POST", url+UID+"/novel_dream_loop", data=json.dumps(payload))

      if json.loads(response.text)['data']['count']==0:
        res = json.loads(response.text)['data']['rows']
        break

    return res

write("星球大战","地球联合舰队")


bash版本

  • 创建文章,通过如下命令
#!/bin/bash
export CY_UID=你刚才得到的UID

#创建新文章
curl -d '{"content":"","title":"文章标题","text":""}' http://if.caiyunai.com/v1/dream/$CY_UID/novel_save 
{"status":0,"data":{"nid":"6064092f660f63133b940725"}}  

#得到nid为你的文章,记下你的nid
export NID=上一个命令返回的nid
  • 选择模型
#查看 model 详情(一般不用):curl -d '' http://if.caiyunai.com/v1/dream/model_list

#小梦 0 号:60094a2a9661080dc490f75a
#小梦 1 号:601ac4c9bd931db756e22da6
#纯爱:601f92f60c9aaf5f28a6f908
#言情:601f936f0c9aaf5f28a6f90a
#玄幻:60211134902769d45689bf75

#我们在本文例子里,选“小梦0号“
export MID=60094a2a9661080dc490f75a
  • 发送续写请求
curl "http://if.caiyunai.com/v1/dream/$CY_UID/novel_ai" -d '{"nid":"'$NID'","content":"你好","uid":"'$CY_UID'","mid":"'$MID'","title":""}'
#返回例子如下:{"status":0,"msg":"ok","data":{"xid":"60640b0c9dda21a5586494a0"}}
#记录下续写id(xid)
export XID=60640b0c9dda21a5586494a0
  • 等待,然后获取续写结果
curl "http://if.caiyunai.com/v1/dream/$CY_UID/novel_dream_loop" -d '{"nid":"'$NID'","xid":"'$XID'"}'

# 请求体样例:{"nid":"602f3a7cb499433a1a16a458","xid":"602f3dfe84f40329800a3760"}
# 返回体样例:
#  计算中:{"status":0,"data":{"rows":[],"count":1}}
#  计算完毕:{"status":0,"data":{"rows":[
#      {"content":"第一条联想结果","_id":"602f3dfe84f40329800a3761","mid":"60094a2a9661080dc490f75a"},
#      {"content":"第二条联想结果","_id":"602f3dfe84f40329800a3761","mid":"60094a2a9661080dc490f75a"},
#      {"content":"第三条联想结果","_id":"602f3dfe84f40329800a3761","mid":"60094a2a9661080dc490f75a"}
#    ],"count":0}}
  • 然后可以反复调用上面的接口继续续写,直到创作完毕后,可以使用novel_save把文章保存
curl -d '{"content":"","title":"文章标题","text":"", "nid":"'$NID'"}' http://if.caiyunai.com/v1/dream/$CY_UID/novel_save
  • 下一次开始续写前,可以使用list函数调出已经保存的文章
curl -d '{"nid":"'$NID'" }' "http://if.caiyunai.com/v1/dream/$CY_UID/list"