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

“龙虾”的爆火,是因为其功能的强大,可以做很多事情。究其根本,调用的还是底层的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对话的页面,这个功能还在开发中。如果小伙伴想要完整源码,可以关注微信公众号,回复“手搓龙虾”,进行下载。

评论 (0)

暂无评论