利用AI Agent在云端搭建智能HR员工助手(上)
我们将导入必要的库,并设置日志记录配置,将当前模块的日志级别配置为INFO。
本文将介绍如何利用亚马逊云科技AI模型托管平台 - Amazon Bedrock的API工具(函数调用)集成企业内部HR现有工具平台、员工数据和自定义知识库,构建HR智能助手应用程序,为员工管理提供个性化、信息丰富的支持,并优化HR流程。
大家通过使用Amazon Bedrock API,使模型能够访问第三方工具,以生成基于大家发送的消息的定制化响应。例如大家有这样一个HR智能员工助手应用,允许员工查询他们的PTO(带薪休假)剩余天数、提交PTO请求、申请W2税表或查阅公司各项HR政策知识库。如果让员工助手回答PTO余额查询或提交PTO请求,模型需要能够查询HR公司系统的API,并返回相关信息或执行必要的操作。同样为了提供HR政策信息,模型需要一个可以搜索企业知识库并检索相关政策详情的工具。这种与模型结合使用的工具也被称为函数调用(Function Calling)。

大家可以参考Jason Stehle的介绍文章《Getting started with the Amazon Bedrock Converse API》和《Intro to Tool Use with the Amazon Bedrock Converse API》以获取更详细的有关AI模型与第三方系统和工具交互的入门信息。本方案将展示如何使用Amazon Bedrock的Converse API、函数调用和知识库来构建一个HR智能助手应用。本文中的实操代码将演示如何从知识库中检索信息、提交PTO请求以及查询HR政策,所有操作都通过一个对话式AI模型完成。尽管本示例是一个HR应用场景,但大家可以非常容易地将其扩展到其他应用场景,例如客户支持等。
方案中的关键概念
在Amazon Bedrock中,AI模型不会直接调用外部工具。如果要调用外部工具,在向模型发送消息时,大家也需要同时提供AI模型需要调用工具的定义,以帮助生成响应。如果模型需要调用工具,AI大模型的输出将会以请求的形式,并附带输入参数,用于定义下游AI工具。调用相应的工具后(例如API、数据库或Lambda函数),AI模型会提供工具的执行结果,以便继续和用户的对话。最终模型会使用大家提供的工具结果生成最终的响应。
要在模型中使用工具,大家可以使用Converse API(Converse或ConverseStream)。虽然也可以通过基本推理操作(InvokeModel或InvokeModelWithResponseStream)使用工具,但推荐使用Converse API,以确保所有支持工具调用的Amazon Bedrock模型具有一致的体验。详细信息请参考官方文档。
在这个HR应用场景中,代码定义了三个工具:
pto_balance:获取员工的PTO剩余天数。submit_pto:提交员工的PTO请求。hr_policy:使用Amazon Bedrock的知识库检索特定HR政策的信息。
当需要生成与HR相关的回复时,模型可以请求这些工具来完成相应任务。注意:下面的实操代码仅用于演示目的,不适用于生产环境。
项目实操前准备
- Python 3.x
boto3库botocore库langchain库- 选择支持Anthropic Claude 3 Sonnet模型的亚马逊云科技区域,例如us-west-2(俄勒冈)。大家可以查阅官方文档以了解不同区域对模型的支持情况。
- 为大家的账户和区域配置Amazon Bedrock上的模型访问权限。参考示例:Amazon Bedrock 设置
- 如果大家没有本地集成开发环境(IDE),可以尝试AWS Cloud9。设置说明见:AWS Cloud9 设置
注意:大家可以使用pip install安装如下所需的库。
pip install boto3 langchain
实操代码概述
导入和初始化
我们将导入必要的库,并设置日志记录配置,将当前模块的日志级别配置为INFO。
import logging
import json
import boto3
from botocore.exceptions import ClientError
from datetime import datetime
from botocore.client import Config
from langchain.prompts import PromptTemplate
import json
bedrock_client = boto3.client(service_name='bedrock-runtime')
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
工具配置
在下方的tool_config文件中,以字典形式定义了AI模型可用的工具。每个工具都包含名称、描述和输入模式。在本示例中,我们班定义了以下将会调用的工具:
pto_balance:获取员工的PTO余额。submit_pto:提交员工的PTO请求。hr_policy:检索特定HR政策的信息。
tool_config = {
"tools": [
{
"toolSpec": {
"name": "pto_balance",
"description": "Get the PTO balance for an employee.",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"employee_id": {
"type": "string",
"description": "The employee ID for which you want to retrieve the PTO balance."
}
},
"required": [
"employee_id"
]
}
}
}
},
{
"toolSpec": {
"name": "submit_pto",
"description": "Submit a PTO request for an employee.",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"employee_id": {
"type": "string",
"description": "The employee ID for which you want to submit a PTO request."
},
"start_date": {
"type": "string",
"description": "The start date of the PTO request in the format YYYY-MM-DD."
},
"end_date": {
"type": "string",
"description": "The end date of the PTO request in the format YYYY-MM-DD."
},
"reason": {
"type": "string",
"description": "The reason for the PTO request."
}
},
"required": [
"employee_id",
"start_date",
"end_date",
"reason"
]
}
}
}
},
{
"toolSpec": {
"name": "hr_policy",
"description": "Get information about a specific HR policy.",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The HR policy question to query the knowledge base."
}
},
"required": [
"question"
]
}
}
}
}
]
}
在上篇教程展示了如何利用Amazon Bedrock的Converse API和函数调用能力来优化HR支持,并提供了一个示例代码来展示如何集成HR系统,以实现更智能、更高效的HR流程管理。在下篇中我们将展示该方案的具体功能性代码,欢迎大家继续关注小李哥的生成式AI应用安全系列,了解国际前沿的亚马逊云科技解决方案,关注我不要错过未来更多的干货内容!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)