Skip to content

qianchencc/yuanbao_apiserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

yuanbao_apiserver

项目简介

这个程序使用playwright操作网页版的腾讯元宝,并且通过api端点将网页版腾讯元宝变为异步且并发的fastapi服务器.

并且在此基础上兼容openai的api格式.

我主要使用它来搭配mineru新版本的llm标题结构优化,适合需要长上下文且低频率的任务.

当然,你不能用它替代自己的本地模型来处理一些高频事务,这将会导致封号.最重要的是腾讯并没有人工客服.适用本程序导致的封号请后果自负.当前预设冷却单节点搭配mineru使用24小时的情况下未导致封号.

快速使用

# 安装依赖
pip install playwright

playwright install chromium
# 其他的缺啥装啥就行

# 启动程序
uvicorn WebAiServer:app --port 3450

# client配置
client = OpenAI(
    base_url="http://localhost:3450/",
    api_key = "None"#填什么都行
)
message=({"role": "user", "content": user_input})
response = client.chat.completions.create(
    model="yuanbao_0",
    messages=message,
)

print(response.choices[0].message.content)

主要逻辑

前期准备

你需要先在浏览器中登录腾讯元宝,然后新建几个分组.一个分组对应一个模型节点,并且分组最上面可以设置系统prompt.

创建完成分组后复制url,将其放到程序中的url_list里.每创建一个新的节点,都会从列表获取一个url.

def init_group_urls():
    que = queue.Queue(maxsize=3)

    url_list = [
        "https://yuanbao.tencent.com/project/114fb4909b004e61b8476527cc10564c"
    ]
    for url in url_list:
        que.put(url)
    return que

登录

每次启动一个节点时,会先进入元宝首页检测登录.

当你需要登录时,会点击登录按钮并等待.此时你只需要正常登录然后刷新页面.正常情况下会将session保存到目录中,并且此后将使用该session自动登录.

登录完成后将会通过url进入指定的分组.

深度思考

有时候腾讯元宝会渲染不出深度思考的按钮,因此我注释了切换的代码.

在正常渲染的情况下,你只需要手动点击切换即可.

在未被正常渲染出来的情况下默认为不思考.你只需要点击分组外的一个普通对话,然后刷新页面就会正常渲染,此时再进入原本的分组即可.

任务处理逻辑

降低对话频率的处理

当你启动程序后的第一次调用都会在组内新建一个对话.为了避免多轮对话造成卡顿,self.max_generation_num次数后将会重新进入分组url,并且新建一个对话.

虽然没有经过测试,但是为了避免会话过多导致问题,当组内有self.max_session_num个对话后,会清理一次组内的所有对话.

此外,程序中设置了很多sleep,主要用于降低对话的频率来规避封号.

generate_cooling_time()函数是一个用于生成一个40-200s冷却时间的双峰函数,除了每一轮对话中的sleep,在清理会话时也会借此进行一次长冷却.

从网页获取回答到程序中

程序将在回答生成完成后会挑选最后一个复制按钮并点击,此时会复制到剪贴板.程序中使用playwright自带的剪贴板api来获取内容.暂时没出现过串味的问题.经过测试,在无头和非无头模式中均可以正常读取.不过我相信,非无头模式在使用时更让人安心.

需要注意的是,程序通过对话计数来判断是否新的复制按钮已经出现.当你手动进入了一个已有对话的会话中,会导致每一次都复制到前几轮回答.因此尽量避免手动切换对话.

关于截断

由于元宝无法自动将输入转为txt,因此比较容易导致输入截断.当检测到输入截断时,程序会直接终止回答.

如何添加节点

curl -X POST "http://localhost:3450/nodes" \
  -H "Content-Type: application/json" \
  -d '{"enable_thinking": false}'

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages