Awesome LLM Apps客服语音智能体:AI电话客服系统
·
Awesome LLM Apps客服语音智能体:AI电话客服系统
客服语音智能体是一款基于OpenAI SDK构建的客户支持应用,它利用OpenAI的GPT-4o和TTS(文本转语音)功能,提供基于语音的知识库问答服务。该系统通过Firecrawl爬取文档网站内容,使用Qdrant处理并构建可搜索的知识库,同时提供文本和语音两种形式的用户查询响应。
核心功能
知识库创建
- 文档爬取:使用Firecrawl爬取指定文档网站内容,支持Markdown和HTML格式,默认限制爬取5页以平衡性能与内容覆盖度。
- 向量存储与索引:通过Qdrant向量数据库存储和索引内容,支持高效的语义搜索。
- 嵌入生成:利用FastEmbed生成文本嵌入(Embedding),为语义搜索提供基础能力。
AI智能体团队
- 文档处理器(Documentation Processor):分析文档内容,生成清晰简洁的回答,包含相关示例并引用来源URL,确保回答易于口头表达。
- TTS智能体(Text-to-Speech Agent):将文本响应转换为自然语音,支持多种语音风格,确保技术术语发音清晰,语速和停顿合理。
- 语音定制:提供11种OpenAI TTS语音选项:alloy、ash、ballad、coral、echo、fable、onyx、nova、sage、shimmer、verse。
交互式界面
- Streamlit UI:简洁的侧边栏配置和主界面交互,支持实时文档搜索和响应生成。
- 音频播放与下载:内置音频播放器,支持下载语音响应文件。
- 进度指示:系统初始化和查询处理过程中显示进度状态,提升用户体验。
系统架构
系统主要由以下模块构成:
- 数据采集层:通过Firecrawl爬取文档网站内容,支持多格式输出。
- 向量存储层:使用Qdrant向量数据库存储文档嵌入和元数据。
- 嵌入生成层:FastEmbed生成文本嵌入向量,用于语义相似度计算。
- 智能体处理层:
- 文档处理器:基于GPT-4o的问答生成。
- TTS智能体:基于GPT-4o-mini-tts的语音合成。
- 用户交互层:Streamlit构建的Web界面,提供API配置、文档URL输入、语音选择和查询交互功能。
快速开始
环境准备
-
克隆仓库:
git clone https://gitcode.com/GitHub_Trending/aw/awesome-llm-apps cd awesome-llm-apps/voice_ai_agents/customer_support_voice_agent -
安装依赖:
pip install -r requirements.txt
API配置
需要获取以下API密钥并在侧边栏配置:
- OpenAI API Key:用于GPT模型调用和TTS生成,从OpenAI Platform获取。
- Qdrant API Key和URL:用于向量存储,从Qdrant Cloud获取。
- Firecrawl API Key:用于文档爬取,从Firecrawl官方渠道获取。
系统初始化
- 在侧边栏输入文档URL(如
https://docs.example.com)。 - 选择 preferred 语音选项。
- 点击"Initialize System"按钮,系统将自动完成:
- Qdrant连接与集合创建。
- 文档爬取与内容处理。
- 嵌入生成与向量存储。
- 智能体初始化。
使用流程
- 在主界面输入查询问题(如"How do I authenticate API requests?")。
- 系统将:
- 搜索相关文档内容。
- 生成文本回答。
- 转换为选定语音的音频响应。
- 可播放或下载语音响应,并查看引用来源URL。
核心代码解析
系统初始化
初始化函数setup_qdrant_collection负责创建Qdrant连接和集合,代码位于voice_ai_agents/customer_support_voice_agent/customer_support_voice_agent.py:
def setup_qdrant_collection(qdrant_url: str, qdrant_api_key: str, collection_name: str = "docs_embeddings"):
client = QdrantClient(url=qdrant_url, api_key=qdrant_api_key)
embedding_model = TextEmbedding()
test_embedding = list(embedding_model.embed(["test"]))[0]
embedding_dim = len(test_embedding)
try:
client.create_collection(
collection_name=collection_name,
vectors_config=VectorParams(size=embedding_dim, distance=Distance.COSINE)
)
except Exception as e:
if "already exists" not in str(e):
raise e
return client, embedding_model
文档爬取
crawl_documentation函数使用Firecrawl爬取文档内容,代码位于voice_ai_agents/customer_support_voice_agent/customer_support_voice_agent.py:
def crawl_documentation(firecrawl_api_key: str, url: str, output_dir: Optional[str] = None):
firecrawl = FirecrawlApp(api_key=firecrawl_api_key)
pages = []
response = firecrawl.crawl_url(
url,
params={
'limit': 5,
'scrapeOptions': {
'formats': ['markdown', 'html']
}
}
)
# 处理分页和内容提取...
return pages
查询处理
异步函数process_query处理用户查询,包括向量搜索、回答生成和语音合成,代码位于voice_ai_agents/customer_support_voice_agent/customer_support_voice_agent.py:
async def process_query(
query: str,
client: QdrantClient,
embedding_model: TextEmbedding,
processor_agent: Agent,
tts_agent: Agent,
collection_name: str,
openai_api_key: str
):
# 查询嵌入生成
query_embedding = list(embedding_model.embed([query]))[0]
# 向量搜索
search_response = client.query_points(
collection_name=collection_name,
query=query_embedding.tolist(),
limit=3,
with_payload=True
)
# 上下文构建与智能体调用...
# TTS生成与音频存储...
return result
应用场景
企业客服
- 24/7无间断服务,降低人力成本。
- 统一知识库,确保回答一致性。
- 多语言支持,覆盖全球客户。
产品支持
- 实时解答用户关于产品文档的问题。
- 语音响应提升 accessibility,适用于驾车或移动场景。
- 自动引用文档来源,便于用户深入了解。
内部培训
- 新员工快速查询公司政策和流程。
- 技术团队检索开发文档和API参考。
- 支持多部门定制化知识库。
总结与展望
客服语音智能体通过整合文档爬取、向量检索和语音合成技术,为企业提供了高效、智能的客户支持解决方案。未来可进一步优化:
- 增加语音识别(ASR)功能,支持纯语音交互。
- 扩展多轮对话能力,提供上下文连贯的服务。
- 优化本地部署方案,满足数据隐私要求。
项目源码和更多示例请参考voice_ai_agents/customer_support_voice_agent目录,官方文档见README.md。
更多推荐



所有评论(0)