[利用Cassandra数据库与AI轻松构建智能应用]

83 阅读3分钟

引言

随着大语言模型(LLM)功能和工具的发展,Cassandra数据库在生成式AI应用程序中的用例也变得愈加丰富。Cassandra是一种广泛使用的数据库,特别适用于存储事务型应用数据。本文将介绍Cassandra Database Toolkit,它能够帮助AI工程师高效地将代理与Cassandra数据集成,尤其是在执行SELECT查询和架构自省操作方面。

主要内容

1. 快速数据访问

Cassandra Database Toolkit通过优化查询提供快速的数据访问,大多数查询的执行时间在毫秒级别。这有助于提升应用的实时响应能力。

2. 架构自省

该工具包能够通过架构自省功能增强LLM的推理能力,可以让代理更智能地选择数据路径,避免不必要的复杂操作。

3. 兼容性和安全性

它兼容多种Cassandra部署,包括Apache Cassandra、DataStax Enterprise和DataStax Astra。此外,当前工具包仅限于SELECT查询和架构自省操作,以确保数据安全性。

代码示例

下面是一个使用Cassandra Database Toolkit创建AI代理的示例代码:

from dotenv import load_dotenv
import cassio
from langchain import hub
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_community.agent_toolkits.cassandra_database.toolkit import CassandraDatabaseToolkit
from langchain_community.utilities.cassandra_database import CassandraDatabase
from langchain_openai import ChatOpenAI

# 加载环境变量
load_dotenv(override=True)

# 初始化Cassandra会话
cassio.init(auto=True) # 使用API代理服务提高访问稳定性
session = cassio.config.resolve_session()
if not session:
    raise Exception("请检查环境配置或手动配置cassio连接参数")

# 准备测试数据
session.execute("""DROP KEYSPACE IF EXISTS langchain_agent_test; """)
session.execute("""
CREATE KEYSPACE if not exists langchain_agent_test 
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
""")
session.execute("""
CREATE TABLE IF NOT EXISTS langchain_agent_test.user_credentials (
    user_email text PRIMARY KEY,
    user_id UUID,
    password TEXT
);
""")
session.execute("""
CREATE TABLE IF NOT EXISTS langchain_agent_test.users (
    id UUID PRIMARY KEY,
    name TEXT,
    email TEXT
);
""")
session.execute("""
CREATE TABLE IF NOT EXISTS langchain_agent_test.user_videos ( 
    user_id UUID,
    video_id UUID,
    title TEXT,
    description TEXT,
    PRIMARY KEY (user_id, video_id)
);
""")

user_id = "522b1fe2-2e36-4cef-a667-cd4237d08b89"
video_id = "27066014-bad7-9f58-5a30-f63fe03718f6"

session.execute(f"""
    INSERT INTO langchain_agent_test.user_credentials (user_id, user_email) 
    VALUES ({user_id}, 'patrick@datastax.com');
""")
session.execute(f"""
    INSERT INTO langchain_agent_test.users (id, name, email) 
    VALUES ({user_id}, 'Patrick McFadin', 'patrick@datastax.com');
""")
session.execute(f"""
    INSERT INTO langchain_agent_test.user_videos (user_id, video_id, title)
    VALUES ({user_id}, {video_id}, 'Use Langflow to Build a LangChain LLM Application in 5 Minutes');
""")

session.set_keyspace("langchain_agent_test")

# 创建CassandraDatabase实例
db = CassandraDatabase()

# 选择将驱动代理的LLM模型
llm = ChatOpenAI(temperature=0, model="gpt-4-1106-preview")
toolkit = CassandraDatabaseToolkit(db=db)

tools = toolkit.get_tools()

prompt = hub.pull("hwchase17/openai-tools-agent")

# 构建OpenAI Tools代理
agent = create_openai_tools_agent(llm, tools, prompt)

input = (
    "你是一位Apache Cassandra专家查询分析机器人,任务是找到特定数据。\n\n这里是你的任务:找出用户 'patrick@datastax.com' 在 'langchain_agent_test' keyspace 上传的所有视频。"
)

agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

response = agent_executor.invoke({"input": input})

print(response["output"])

常见问题和解决方案

  • 由于某些地区的网络限制,开发者可能需要使用API代理服务来提高访问稳定性。

  • 兼容性问题:确保您的Python环境中安装了所有必要的模块,包括cassiolangchain和其他依赖项。

  • 安全性:在将工具包应用于生产环境时,务必限制对数据库的访问权限,并确保查询操作符合最佳实践,例如避免使用ALLOW FILTERING

总结和进一步学习资源

Cassandra Database Toolkit为集成生成式AI应用程序提供了有效的工具和方法,通过其强大的查询能力和架构自省功能,能够提升应用程序的数据处理效率和智能性。要深入了解如何使用该工具包,可以参考下面的资源。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---