如何用python手搓一个“龙虾”

17人浏览 / 0人评论 / 添加收藏

“龙虾”的爆火,是因为其功能的强大,可以做很多事情。究其根本,调用的还是底层的ai大语言模型。“龙虾”本身就是一个超级的Agent,这个agent只不过功能更强大而已,封装了一个友好的web页面。

有很多人在“养虾”,花钱安装花钱卸载“龙虾”。最近,小编有时间就研究如何免费的实现一个“龙虾”,于是就用python手搓了一个“龙虾”。

小编测试了两个功能:一个是人工对话,另外一个是对本地的所有py文件打包成一个压缩包文件。它都可以执行的很完美。

当然它也可以帮你下载视频等网络文件。

好了,废话不多说了,直接上干货。

新建文件:agent_skill.py

from openrouter import OpenRouter
import os
import time
import random

with OpenRouter(
   api_key=os.getenv("OPENROUTER_API_KEY")
) as client:
   
   agentmd = open("Agent.md", "r").read()
   skillmd = open("SKILL.md", "r").read()
   # messages = []
   messages = [
       {"role":"system", "content": agentmd + skillmd}
   ]

   while True:
       user_input = input("\n【你】")
       messages.append({"role":"user","content":user_input})
       print("\n------Agent循环开始---------")

       while True:
           # 添加延迟
           time.sleep(random.uniform(1, 3))  # 等待1-3秒

           response = client.chat.send(
               model="openrouter/free",# 示例免费模型
               messages = messages
           )
           reply = response.choices[0].message.content
           print(f"【AI】{reply}")
           messages.append({"role":"assistant","content":reply})

           if reply.strip().startswith('完成:'):
               print("\n------Agent循环结束---------")
               print(f"【AI】{reply.strip().split('完成:')[1].strip()}")
               break

           text = reply.strip().split("命令:")
           command = text[1].strip()
           command_result = os.popen(command).read()

           content = f"执行完毕 {command_result}"
           print(f"【Agent】{content}")

           messages.append({"role":"user","content":content})
       

运行效果如下:

 

后续可以添加一个web对话的页面,这个功能还在开发中。如果小伙伴想要完整源码,可以关注微信公众号,回复“手搓龙虾”,进行下载。

全部评论