引言
随着大语言模型(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环境中安装了所有必要的模块,包括
cassio、langchain和其他依赖项。 -
安全性:在将工具包应用于生产环境时,务必限制对数据库的访问权限,并确保查询操作符合最佳实践,例如避免使用
ALLOW FILTERING。
总结和进一步学习资源
Cassandra Database Toolkit为集成生成式AI应用程序提供了有效的工具和方法,通过其强大的查询能力和架构自省功能,能够提升应用程序的数据处理效率和智能性。要深入了解如何使用该工具包,可以参考下面的资源。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---