Cogency
扫码查看

开箱即用的对话式AI智能体开发框架

Cogency

综合介绍

Cogency 是一个为开发者设计的Python框架,旨在简化对话式AI智能体的创建过程。它提供了一个即插即用的认知架构,让开发者只需几行代码就能构建出功能齐全、能够使用工具的AI智能体。 Cogency的核心是基于一个明确的“思考-行动-观察”(ReAct)循环,这个设计使得智能体的推理过程清晰透明,便于开发者理解和调试。该框架支持多种大语言模型(LLM),如OpenAI、Anthropic、Gemini等,并能自动检测和集成环境中的模型、工具和记忆后端,实现零配置启动。 同时,它内置了持久化记忆、多租户管理、实时流式输出和清晰的追踪日志等生产环境所需的功能,使开发者可以专注于业务逻辑,而无需处理复杂的底层架构。

功能列表

  • 三行代码创建智能体: 通过一次导入,即可创建一个功能完备、可使用工具的智能体。
  • ReAct核心: 智能体构建于一个“思考(Reason)→行动(Act)→观察(Observe)”的循环之上,推理过程清晰,易于调试。
  • 内置记忆功能: 支持持久化记忆,并可扩展至多种后端,如ChromaDB、Pinecone等。
  • 零配置启动: 能够自动检测并集成环境中的大语言模型、工具和记忆存储。
  • 自动工具发现: 只需将自定义工具放入指定目录,框架便能自动注册并智能调用。
  • 流式输出优先: 支持实时观察智能体的每一步思考过程,实现完全的透明化。
  • 清晰的追踪日志: 每一推理步骤都有明确的阶段标记,方便追踪和分析。
  • 个性化注入: 可以轻松地为智能体注入不同的性格、语气和风格。
  • 通用LLM支持: 开箱即用地支持市面上主流的大语言模型,包括OpenAI、Anthropic、Gemini、Grok和Mistral。
  • 易于扩展的设计: 开发者可以轻松添加新的工具、记忆后端和嵌入模型。
  • 多租户支持: 内置用户上下文隔离和对话历史记录功能,方便在多用户场景下使用。
  • 生产环境强化: 包含了韧性、速率限制、指标监控和追踪等生产级功能。

使用帮助

Cogency是一个强大的AI智能体框架,其设计目标是“即插即用”,让开发者能快速上手。以下是详细的安装和使用流程。

1. 环境准备

在开始之前,请确保你的开发环境中已经安装了Python 3.9或更高版本。你可以使用以下命令检查Python版本:

python --version

2. 安装Cogency

Cogency可以通过Python的包管理器pip进行安装。

快速安装(基础版)这个版本包含了运行Cogency所需的核心组件。

pip install cogency

安装特定功能你可以根据需要选择性地安装特定的大语言模型(LLM)支持、记忆后端或嵌入模型。

# 仅安装OpenAI支持
pip install cogency[openai]
# 仅安装ChromaDB作为记忆后端
pip install cogency[chromadb]
# 仅安装Sentence-Transformers作为嵌入模型
pip install cogency[sentence-transformers]

完整安装如果你希望体验Cogency的全部功能,包括所有支持的LLM、记忆后端和嵌入模型,可以使用以下命令:

pip install cogency[all]

3. 配置API密钥

Cogency需要连接到大语言模型服务,这通常需要配置API密钥。框架会自动从名为.env的文件中加载环境变量。

  1. 在你的项目根目录下创建一个名为.env的文件。
  2. 打开.env文件,并添加你的API密钥。例如,如果你使用OpenAI,文件内容如下:
    OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

    请将sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx替换为你自己的OpenAI API密钥。Cogency同样支持Anthropic、Google Gemini等多种模型提供商,只需配置相应的环境变量即可。

4. 创建并使用你的第一个智能体

基础用法:三行代码实现创建一个基础的问答智能体非常简单。新建一个Python文件(例如 main.py),然后输入以下代码:

import asyncio
from cogency import Agent
async def main():
# 初始化一个名为 "assistant" 的智能体
agent = Agent("assistant")
# 使用 stream 方法进行流式交互,问题是 "25 * 43 等于多少?"
async for chunk in agent.stream("What is 25 * 43?"):
print(chunk, end="", flush=True)
# 运行异步主函数
asyncio.run(main())

运行此脚本,你将看到智能体实时输出其思考过程和最终答案。

5. 核心功能操作

注入个性你可以为智能体指定性格、语气和风格,让它的回应更具特色。

# 创建一个友好且热爱编程的海盗智能体
pirate_agent = Agent("pirate", personality="friendly pirate who loves coding")
async for chunk in pirate_agent.stream("Tell me about AI!"):
print(chunk, end="", flush=True)

使用自定义工具Cogency的强大之处在于其工具使用能力。框架可以自动发现并集成你创建的工具。

  1. 首先,定义一个继承自BaseTool的工具类。
  2. 实现run方法来定义工具的具体功能。
  3. 实现get_schema方法来描述工具的调用方式。

例如,创建一个获取时区的工具:

from cogency import Agent, BaseTool
import datetime
import pytz
class TimezoneTool(BaseTool):
def __init__(self):
# 初始化工具,定义名称和描述
super().__init__("timezone", "Get current time in a specific city")
async def run(self, city: str):
# 工具的核心逻辑
try:
# 假设一个简化的市区到时区映射
tz_map = {"tokyo": "Asia/Tokyo", "london": "Europe/London", "new york": "America/New_York"}
timezone = pytz.timezone(tz_map.get(city.lower(), "UTC"))
now = datetime.datetime.now(timezone)
return {"time": f"Current time in {city}: {now.strftime('%H:%M:%S')}"}
except Exception as e:
return {"error": str(e)}
def get_schema(self):
# 定义工具的调用接口描述
return "timezone(city='string')"
# 创建智能体时,传入自定义工具列表
# Cogency会自动注册并决定何时使用它
time_agent = Agent("time_assistant", tools=[TimezoneTool()])
# 现在可以向智能体提问,它会在需要时使用你的工具
async for chunk in time_agent.stream("What's the current time in Tokyo?"):
print(chunk, end="", flush=True)

使用记忆后端为了让智能体能够记住之前的对话内容,你可以为其配置一个记忆后端。

from cogency import Agent, FSMemory
from cogency.memory.backends import ChromaDB # 假设已安装ChromaDB
# 使用内置的文件系统记忆(适合快速原型开发)
agent_with_fs_memory = Agent("memory_agent", memory=FSMemory())
# 使用ChromaDB作为向量数据库记忆(适合生产环境)
# agent_with_chroma_memory = Agent("vector_agent", memory=ChromaDB())

多租户隔离在多用户应用中,为每个用户维护独立的对话历史至关重要。在调用runstream方法时,只需传入一个user_id即可。

agent = Agent("multitenant_assistant", memory=FSMemory())
# 用户1的操作
await agent.run("Remember my favorite color is blue", user_id="user_1")
response_user1 = await agent.run("What is my favorite color?", user_id="user_1")
print(f"User 1's favorite color: {response_user1}") # 输出: "blue"
# 用户2的操作
response_user2 = await agent.run("What is my favorite color?", user_id="user_2")
print(f"User 2's favorite color: {response_user2}") # 输出: "I don't have a memory of your favorite color."

应用场景

  1. 智能客服与支持可以构建一个能够理解用户问题、调用内部知识库或API工具来查询订单状态、解答产品疑问的智能客服机器人。通过个性化注入,还可以使其符合品牌形象。
  2. 个人研究助理研究人员或学生可以利用Cogency创建一个个人研究助理。该智能体可以接入网络搜索工具来查找学术论文,使用文件管理工具来整理本地资料,并根据用户的提问进行多步推理,最终生成文献综述或摘要。
  3. 自动化工作流在DevOps或IT管理中,可以创建一个能理解自然语言指令的智能体,用于执行服务器管理任务,如查询服务器状态、重启服务或分析日志。通过自定义工具,可以将其接入现有的监控和部署系统。
  4. 快速应用原型开发开发者可以利用Cogency快速搭建一个包含AI功能的MVP(最小可行产品)。例如,一个旅行规划应用,智能体可以根据用户的目的地和日期,自动调用天气预报、航班查询和酒店预订等工具,并生成一份完整的旅行计划。

QA

  1. 什么是Cogency?Cogency是一个Python框架,它提供了一套完整的认知架构,让开发者可以非常轻松地构建、测试和部署能够执行复杂任务的对话式AI智能体。它的核心特点是“开箱即用”和基于ReAct的透明推理过程。
  2. 我需要具备哪些知识才能使用Cogency?你需要具备基本的Python编程知识,特别是对异步编程(asyncio)有所了解。如果你想创建自定义工具或扩展其功能,对API和面向对象编程的理解会很有帮助。
  3. Cogency支持哪些大语言模型?Cogency原生支持市面上多种主流的大语言模型服务,包括OpenAI (GPT系列)、Anthropic (Claude系列)、Google (Gemini)、Grok和Mistral。开发者只需在环境中配置好相应的API密钥即可。
  4. 使用Cogency是否需要付费?Cogency框架本身是开源且免费的,遵循MIT许可证。但是,使用其支持的第三方大语言模型服务(如OpenAI API)通常会产生费用,具体取决于相应服务商的定价策略。
  5. Cogency的推理过程是黑盒吗?不是。Cogency的一个核心设计理念就是透明化。它采用“流式优先”的输出方式,能够实时展示智能体从“思考”、“行动”到“观察”的每一步推理过程,这使得调试和优化智能体的行为变得非常容易。
微信微博Email复制链接