Difference between revisions of "彩云小梦API"

From CaiyunWiki
Jump to: navigation, search
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
大家好,在这里介绍彩云小梦 API 的调用。
+
大家好,在这里介绍彩云小梦 API 的调用。目前还非常初级,处于尝鲜版本。使用步骤如下:
  
* 账户注册:通过 http://if.caiyunai.com/dream 注册一个彩云小梦的普通用户
+
* 发送邮件到 api@caiyunapp.com 申请 token,请写明:
* 注册完成后:在 chrome 浏览器地址栏输入(其中前缀 '''javascipt''' 需要手动输入):'''javascript:alert(localStorage.cy_dream_user)''',得到你的uid
+
** 你的单位/学校和姓名
* 创建文章,通过如下命令
+
** 申请 API 的用途
<syntaxhighlight lang="bash">
+
** App 或 网站的链接
#!/bin/bash
 
UID=你刚才得到的UID
 
  
#创建新文章
+
* 按照下面的说明进行调用
curl -d '{"content":"","title":"文章标题","text":""}' http://if.caiyunai.com/v1/dream/$UID/novel_save
 
{"status":0,"data":{"nid":"6064092f660f63133b940725"}} 
 
  
#得到nid为你的文章,记下你的nid
+
=python版本=
NID=6064092f660f63133b940725
+
colab链接:https://colab.research.google.com/drive/1Ha0IEOm-VoPu6DbtbUkuYE5HycdfQ9Ax?usp=sharing
</syntaxhighlight>
+
<syntaxhighlight lang="python">
* 选择模型,在这里,选“小梦0号”
+
def write(title, content):
<syntaxhighlight lang="bash">
+
    global nid
curl -d '' http://if.caiyunai.com/v1/dream/model_list
 
MID=60094a2a9661080dc490f75a
 
</syntaxhighlight>
 
* 发送续写请求
 
<syntaxhighlight lang="bash">
 
  
curl "http://if.caiyunai.com/v1/dream/$UID/novel_ai" -d '{"nid":"$NID","content":"你好","uid":"$UID","mid":"$MID","title":""}';
+
    import requests
#返回例子如下:{"status":0,"msg":"ok","data":{"xid":"60640b0c9dda21a5586494a0"}}
+
    import json
#记录下续写id(xid)
+
   
XID=60640b0c9dda21a5586494a0
+
    url = "http://if.caiyunai.com/v1/dream/"
</syntaxhighlight>
+
   
* 等待,然后获取续写结果
+
    #WARNING, this should be replaced by your token
<syntaxhighlight lang="bash">
+
    token = 你得到的token
  
curl "http://if.caiyunai.com/v1/dream/$UID/novel_dream_loop" -d '{"nid":"$NID","xid":"$XID"}'
 
  
# 请求体样例:{"nid":"602f3a7cb499433a1a16a458","xid":"602f3dfe84f40329800a3760"}
+
    #创建文章,如果已经创建过就使用之前的文章id
# 返回体样例:
 
#  计算中:{"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>
+
    try:
 +
   
 +
        payload = {
 +
                "content" : content,
 +
                "title" : title,
 +
                "nid": nid,
 +
              }
  
* 创作完毕后,可以使用novel_save把文章保存
+
    except:
<syntaxhighlight lang="bash">
 
  
curl -d '{"content":"","title":"文章标题","text":"", "nid":"$NID"}' http://if.caiyunai.com/v1/dream/$UID/novel_save
+
        payload = {
 +
                "content" : content,  
 +
                "title" : title,
 +
              }
  
</syntaxhighlight>
 
  
* 下一次开始续写前,可以使用list函数调出已经保存的文章
+
        response = requests.request("POST", url+token+"/novel_save", data=json.dumps(payload))
  
<syntaxhighlight lang="bash">
+
        nid = json.loads(response.text)['data']['nid']
  
curl -d '{"nid":"$NID" }' "http://if.caiyunai.com/v1/dream/$UID/list"
+
    #选择模型
  
 +
    #小梦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("星球大战","地球联合舰队")
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 08:34, 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("星球大战","地球联合舰队")