Difference between revisions of "彩云小梦API"

From CaiyunWiki
Jump to: navigation, search
Line 1: Line 1:
大家好,在这里介绍彩云小梦 API 的调用。目前还非常初级,处于尝鲜版本。有问题请和 api@caiyunapp.com 反馈。
+
大家好,在这里介绍彩云小梦 API 的调用。目前还非常初级,处于尝鲜版本。
 +
 
 +
* 发送邮件到 api@caiyunapp.com 申请 token,请写明:
 +
** 你的单位/学校和姓名
 +
** 申请 API 的用途
 +
** App 或 网站的链接
 +
 
 +
* 按照下面的说明进行调用
  
* 账户注册:通过 http://if.caiyunai.com/dream 注册一个彩云小梦的普通用户
 
* 注册完成后:在 chrome 浏览器地址栏输入(其中前缀 '''javascript''' 需要单独复制):'''javascript:alert(localStorage.cy_dream_user)''',得到你的uid
 
 
=python版本=
 
=python版本=
 
colab链接:https://colab.research.google.com/drive/1Ha0IEOm-VoPu6DbtbUkuYE5HycdfQ9Ax?usp=sharing
 
colab链接:https://colab.research.google.com/drive/1Ha0IEOm-VoPu6DbtbUkuYE5HycdfQ9Ax?usp=sharing
Line 14: Line 19:
 
     url = "http://if.caiyunai.com/v1/dream/"
 
     url = "http://if.caiyunai.com/v1/dream/"
 
      
 
      
     #WARNING, this should be replaced by your uid
+
     #WARNING, this should be replaced by your token
     UID = 你刚才得到的UID
+
     token = 你得到的token
  
  
Line 36: Line 41:
  
  
         response = requests.request("POST", url+UID+"/novel_save", data=json.dumps(payload))
+
         response = requests.request("POST", url+token+"/novel_save", data=json.dumps(payload))
  
 
         nid = json.loads(response.text)['data']['nid']
 
         nid = json.loads(response.text)['data']['nid']
Line 60: Line 65:
 
             }
 
             }
  
     response = requests.request("POST", url+UID+"/novel_ai", data=json.dumps(payload))
+
     response = requests.request("POST", url+token+"/novel_ai", data=json.dumps(payload))
  
 
     try:
 
     try:
Line 81: Line 86:
 
               }
 
               }
  
       response = requests.request("POST", url+UID+"/novel_dream_loop", data=json.dumps(payload))
+
       response = requests.request("POST", url+token+"/novel_dream_loop", data=json.dumps(payload))
  
 
       if json.loads(response.text)['data']['count']==0:
 
       if json.loads(response.text)['data']['count']==0:
Line 90: Line 95:
  
 
write("星球大战","地球联合舰队")
 
write("星球大战","地球联合舰队")
</syntaxhighlight>
 
 
 
=bash版本=
 
* 创建文章,通过如下命令
 
<syntaxhighlight lang="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
 
</syntaxhighlight>
 
* 选择模型
 
<syntaxhighlight lang="bash">
 
#查看 model 详情(一般不用):curl -d '' http://if.caiyunai.com/v1/dream/model_list
 
 
#小梦 0 号:60094a2a9661080dc490f75a
 
#小梦 1 号:601ac4c9bd931db756e22da6
 
#纯爱:601f92f60c9aaf5f28a6f908
 
#言情:601f936f0c9aaf5f28a6f90a
 
#玄幻:60211134902769d45689bf75
 
 
#我们在本文例子里,选“小梦0号“
 
export MID=60094a2a9661080dc490f75a
 
</syntaxhighlight>
 
* 发送续写请求
 
<syntaxhighlight lang="bash">
 
 
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
 
</syntaxhighlight>
 
* 等待,然后获取续写结果
 
<syntaxhighlight lang="bash">
 
 
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}}
 
 
</syntaxhighlight>
 
 
* 然后可以反复调用上面的接口继续续写,直到创作完毕后,可以使用novel_save把文章保存
 
<syntaxhighlight lang="bash">
 
 
curl -d '{"content":"","title":"文章标题","text":"", "nid":"'$NID'"}' http://if.caiyunai.com/v1/dream/$CY_UID/novel_save
 
 
</syntaxhighlight>
 
 
* 下一次开始续写前,可以使用list函数调出已经保存的文章
 
 
<syntaxhighlight lang="bash">
 
 
curl -d '{"nid":"'$NID'" }' "http://if.caiyunai.com/v1/dream/$CY_UID/list"
 
 
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 08:25, 4 April 2021

大家好,在这里介绍彩云小梦 API 的调用。目前还非常初级,处于尝鲜版本。

  • 发送邮件到 api@caiyunapp.com 申请 token,请写明:
    • 你的单位/学校和姓名
    • 申请 API 的用途
    • App 或 网站的链接
  • 按照下面的说明进行调用

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 token
    token = 你得到的token


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

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

    except:

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


        response = requests.request("POST", url+token+"/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+token+"/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+token+"/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("星球大战","地球联合舰队")