通过这个库,可以很方便的接入不同的大模型和MCP工具。
可以在其上层封装出可落地的AI项目。
对AI感兴趣的小伙伴可以给个Star ⭐
介绍
本项目使得创建一个AI智能体变得非常简单,能够赋予其思维(LLM)、记忆(Storage)和能力(Tools)。不仅可以接入当前流行的MCP服务,还可以自定义工具进行接入,极大提高了智能体创建的效率。
安装
go get github.com/deep-project/agent
使用 / Usage
import (
"fmt"
"github.com/deep-project/agent"
"github.com/deep-project/agent/adapters"
"github.com/mark3labs/mcp-go/client"
"github.com/sashabaranov/go-openai"
)
a := agent.New()
// 赋予AI思维
mindConfig := openai.DefaultConfig("TOKEN XXXXXXXXXXXXXXX")
mindConfig.BaseURL = "https://api.openai.com/v1"
a.GrantMind(adapters.NewOpenAI(mindConfig, "gpt-4"))
// 赋予AI记忆
a.GrantMemory(adapters.NewMemorySimpleAdapter(999))
// 赋予AI能力
mcpClient, _ := client.NewStdioMCPClient(`./mcp`, []string{}, "-y")
adapters.MCPAdapterInitializeClient(mcpClient)
a.GrantAbility(adapters.NewMCPAdapter(&adapters.MCPAdapterOptions{Enable: true}, mcpClient))
// 设置一个会话id
// 如果为空,则自动生成一个uuid
var sessionID = ""
sessionID, msg, _ := a.Talk(sessionID, "hello world!")
// 得到回复
fmt.Println("reply", msg)
可以赋予多种能力
// MCP 1
a.GrantAbility(adapters.NewMCPAdapter(&adapters.MCPAdapterOptions{Enable: true}, MCP_1))
// MCP 2
a.GrantAbility(adapters.NewMCPAdapter(&adapters.MCPAdapterOptions{Enable: true}, MCP_2))
能力不止于mcp服务,可以是任何符合程序接口的tools。可以直接自定义一个满足接口的结构体,整体打包,这样也不必再开启一个mcp服务了。
内置的存储适配器
// 简单的存储(依靠内存)
a.GrantMemory(adapters.NewMemorySimpleAdapter(999))
// 使用bbolt数据库作为存储
db, _ := bbolt.Open("my.db", 0666, nil)
a.GrantMemory(adapters.NewMemoryBoltDBAdapter(db))
其他自定义的存储mysql sqlite pgsql都可以。只需要符合程序接口即可。
多种交互方式
// 简单的文字交流
a.Talk(sessionID, "hello world!")
// 输入文字,返回完整消息体
a.Send(sessionID, "hello world!")
// 通过消息体交互
a.Interact(&agent.InteractInput{
SessionID: sessionID,
MessagesLimit: 50,
Messages: []message.Message{
{Role: message.RoleUser, Contents: []message.Content{message.NewMessageWithContentText("hello world!")}},
}
})
通过消息体交互,可以保持最大的灵活性,可以自定义角色,限制消息列表最大长度,发送多种类型的消息。