1. 回顾 1.1 什么是LangChain Agent? 自主Agent是无需人工干预即可做出决策并采取行动的系统,但它们可能会表现出不可预测的行为。为了解决这个问题,Agent了解他们可以做什么(操作)非常重要。在LangChain的ReAct型Agent中,Agent可以采取的行动被写在提示中,并根据提示做出决策和行动。这使您可以对Agent的行为进行一定程度的控制。 1.2 任务的生成 用户提出的问题并不总是简单的,但通常很复杂,需要拆分成多项任务。上篇文章,我们解释了如何将用户的问题传递给 LLM、解释它们并将其转换为特定的任务。在这个任务生成过程中,Agent在生成任务的同时了解自己可能采取的行动非常重要。 2. Multi-action Agent 任务生成后,生成的任务(单个或多个)实际上被放入Agent中,但通常使用的LangChain的LLMSingleActionAgent无法处理多个任务。必须创建自己的Multi-action Agent来处理多个任务并将它们组合成一个答案。接下来就讲解一下如何使用LangChain创建自己的Multi-action Agent! 2.1 创建Multi-action Agent 现在,让我们看看如何创建Multi-action Agent。这次,我们将参考LangChain的BaseMultiActionAgent类来创建一个自定义代理。from typing import List, Tuple, Any, Union, Dict, Optionalfrom langchain.chat_models import ChatOpenAIfrom langchain.schema import AgentAction, AgentFinishfrom langchain.agents import Tool, BaseMultiActionAgent, AgentOutputParserfrom langchain.chains import LLMChainfrom langchain.callbacks.manager import Callbacksfrom TaskListCreation import TaskListCreationclass LLMMultiActionAgent(BaseMultiActionAgent):    """Base class for multi action agents using LLMChain."""    llm_chain: LLMChain    output_parser: AgentOutputParser    stop: List[str]            def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self.task_list_creation = TaskListCreation()    @property    def input_keys(self) -> List[str]:        """Return the input keys."""        return list(set(self.llm_chain.input_keys) - {"intermediate_steps"})    def dict(self, **kwargs: Any) -> Dict:        """Return dictionary representation of agent."""        _dict = super().dict()        del _dict["output_parser"]        return _dict    def plan(        self,         intermediate_steps: List[Tuple[AgentAction, str]],         callbacks: Callbacks = None,        **kwargs: Any    ) -> Union[List[AgentAction], AgentFinish]:        """Given input, decide what to do.        Args:            intermediate_steps: Steps taken to date, along with observations            callbacks: Callbacks to run.            **kwargs: User inputs.        Returns:            Action specifying what tool to use or finish action.        """        latest_user_message = kwargs.get("input", "")        if len(intermediate_steps) == 0:            task_list = self.task_list_creation.create_task_list(latest_user_message)        else:              task_list = []                actions = []        final_outputs = [obs for _, obs in intermediate_steps]        kwargs.pop("input", None)        for task in task_list:            output = self.llm_chain.run(                intermediate_steps=intermediate_steps,                stop=self.stop,                input=task,                **kwargs            )            response = self.output_parser.parse(output)            if isinstance(response, AgentAction):                for tool in ALLOWED_TOOLS:                    if tool in response.tool:                        response.tool = tool                          break                                action = AgentAction(tool=response.tool, tool_input=response.tool_input, log=response.log)                actions.append(action)            elif not isinstance(response, AgentFinish):                return AgentFinish(return_values={"output": "Unexpected response type."}, log="")        if actions:            return actions        return AgentFinish(return_values={"output": final_outputs}, log="\n\nAll questions answered.")        def tool_run_logging_kwargs(self) -> Dict:        return {            "llm_prefix": "",            "observation_prefix": "" if len(self.stop) == 0 else self.stop[0],        }请关注plan方法。这定义了实际的Agent执行流程,返回值是AgentAction 的列表或AgentFinish让我们按顺序看一下:1. 通过kwargs接收用户的问题2. intermediate_steps == 0时,即ReAct思维过程进入第一个循环时,生成执行任务。这里,我们暂且用TaskListCreation命名生成任务的类,并调用它。3. 对于每个生成的任务,运行 llm_chain 并将输出传递给 output_parser 以获取响应。4. 根据此响应定义并返回 AgentAction 或 AgentFinish这就是整个流程。 响应包含[Question/Thought/Action/Action Input]一系列思考结果。 LangChain的agent本质上是循环思考,直到得到最终答案,并且intermediate_steps每次都会递增。 但这一次,我尝试在第一轮之后停止思考循环。 2.2 AgentExecutor 简单解释一下 AgentExecutor 的作用,_call在方法内部,_take_next_step被调用、AgentAction执行并Observation获取任务的答案。多任务代理需要多加小心,因为有多个任务。如果所有生成的任务都能独立处理是没有问题的,但是如果任务之间存在依赖关系怎么办?例如,如果用户提出诸如“比较 A 公司的产品 X 和 B 公司的产品 Y 的功能”之类的问题,则会生成以下任务。1. 调查A公司产品X的特点2. 调查B公司产品Y的特点3. 比较产品 X 和产品 Y 的功能如果我们独立地对待这些,第三个任务会发生什么?在不了解产品 X 和产品 Y 的情况下,您无法比较它们。换句话说,只有在收到前两个任务的答案后,第三个任务才变得有意义。AgentExecutor 最初的设计并不是基于这样的假设,因此在这种情况下,有必要将任务之间的答案正确地传递到下一个任务。您需要将此类“内存接管”添加到您的 AgentExecutor 中。例如,您可以通过执行以下操作来解决此问题:        for agent_action in actions:            current_memory = self.local_memory.load_memory_variables({})            if current_memory['history']:                memory_msg = "执行Action时请参考以下对话历史记录。\n对话历史记录:\n" + current_memory['history']                agent_action.tool_input += memory_msg 2.3 aplan方法 如果任务之间不存在依赖关系,我们建议并行处理任务以加快进程。这种情况下,就需要定义前面提到的LLMtMultiActionAgent的aplan。例如,您可以包含如下代码片段:import asyncioasync def run_task(task):    output = await self.llm_chain.arun(        intermediate_steps=intermediate_steps,        stop=self.stop,        input=task,        **kwargs    )    return self.output_parser.parse(output)tasks = [run_task(task) for task in task_list]results = await asyncio.gather(*tasks)使用 arun 而不是 run 来获取所有任务的一组思考结果,然后使用 asyncio.gather 同时运行多个异步任务。 通过这样进行并行处理,即使有多个任务,也可以像只有一个任务时一样快速获得任务的答案。 2.4 Agent实例 最后,如下所示定义代理的实例并run使用命令运行代理。当发生特定于代理的解析错误时,我认为最好适当地使用 try/ except 进行响应。llm_chain = LLMChain(llm=self.LLM, prompt=self.prompt_agent)tool_names = [tool.name for tool in tools]agent = LLMMultiActionAgent(    llm_chain=llm_chain,    output_parser=output_parser,    stop=["\nObservation:"],    allowed_tools=tool_names)        self.agent_executor = CustomAgentExecutor.from_agent_and_tools(    agent=agent,     tools=tools,     verbose=True,     memory=self.memory,    handle_parsing_errors=False)result = self.agent_executor.run(query) 3. 总结 在本文中,我们详细解释了如何使用 LangChain 创建Multi-action Agent。通过开发自己的代理,您将能够理解复杂的用户查询,将其分解为适当的任务,并有效地处理它们。

大模型 ReAct 智仁HRO LangChain Agent

1. 简介 自治代理(Autonomous Agents)最近经历了显着的演变,自治代理指的是无需人工干预即可独立做出决策和采取行动的系统。另一方面,由于它们基于复杂的算法进行操作,因此它们的行为难以预测,这可能导致无法实现预期行为等问题。那么,到底是什么原因导致它不能正常工作呢?原因之一是Agent本身不了解自己能做什么。在LangChain的Agent中,基于ReAct式的思维,Agent可以采取什么行动(或者说可以使用什么工具)被提前写在提示中,并根据该提示做出决策和行动。这样,通过意识到Agent本身“预先知道它能做什么”,就可以在一定程度上控制Agent的行为。这篇文章我们将讨论如何从查询来生成任务。 2. 根据查询生成任务 对于Agent来说,“提前知道他们能做什么”很重要。Agent本身根据 ReAct 思维过程顺序生成任务,但是除了Agent用的LLM之外,准备任务生成用的LLM对于控制Agengt的行为是非常有用的。例如,假设您被问到这样的问题:“请比较 A 公司产品 X 和 B 公司产品 Y 的功能。 ” 如果该工具有办法研究这些产品(例如通过搜索网络或使用专用数据库),1. 调查A公司产品X的特点2. 调查B公司产品Y的特点3. 比较产品 X 和产品 Y 的功能它可以分解生成以上三个任务。然而,如果你不知道自己可以采取什么行动(或者有哪些工具可用),你可能无法在你的LLM中采取行动,比如“拜访A公司并咨询负责人”或“给A公司负责人打电话。”否则,可能会创建无法完成的任务。写一个好的提示是关键,但是如何真正写出提示呢?下面是一个Prompt例子。TEMPLATE_CREATE_TASK_LIST = """对于用户问题“{user_question}”,请按照以下规则生成任务列表:1. 如果您的问题可以清楚地分解为多个独立的主题或元素,请将它们分成单独的问题。2. 如果问题中包含“那些”、“那个”等不清楚的指示词,请参考对话记录猜测指示词的内容。3. 如果问题已分解,请将分解后的问题作为任务列表返回。4. 如果问题无法分解,请按任务列表形式返回问题。对话历史:{历史}您可以采取四种操作来执行该任务:1. Retrieval_A:用于回答A公司产品时使用2. Retrieval_B:用于回答有关B公司产品的问题3. Comparator:用于比较不同产品4. Calculator:用于费用等数值计算以下是一些示例:示例 1:告诉我有关产品 X 和产品 Y 的信息。→1. 了解产品 X2.了解产品Y示例 2:如果您购买 1000 件,请估算产品 X 的价格。→1. 找出产品 X 每个地点的价格。2.计算购买1000件的价格""" 3. 执行 3.1 设置LLM和API KEY那么试着执行一下。首先,设置API KEY和LLM。这一次,我们还将定义ConversationBufferMemory,假设您在接受前一个问题时生成任务。import osimport openaifrom langchain.memory import ConversationBufferMemoryfrom langchain.chat_models import ChatOpenAIopenai.api_key = os.environ['OPENAI_API_KEY']    llm = ChatOpenAI(    model_name='gpt-3.5-turbo',       temperature=0)  memory = ConversationBufferMemory() 3.2 生成任务 接下来我们看看实际生成任务的create_task_list。该函数使用LLM解析用户的问题并将其转化为具体的任务。最终结果是生成的任务列表。from langchain.schema import AIMessage, HumanMessage, SystemMessagefrom typing import Listimport redef create_task_list(user_question: str) -> List[str]:    """Use LLM to decompose a question and convert into tasks.       Args:           user_question: The user's question.        Returns:           A list of tasks derived from the user's question.    """    content_message = TEMPLATE_CREATE_TASK_LIST.format(        user_question=user_question,         history=memory.load_memory_variables({})['history'],    )    output = llm([HumanMessage(content=content_message)])    all_responses = output.content.splitlines()    task_list = []    for line in all_responses:        if re.match(r"^\d+\.", line):            task = line[line.index('.')+2:].strip()            if task != user_question:                task_list.append(task)    if len(task_list) == 0:        task_list.append(user_question)    return task_list使用前面介绍的TEMPLATE_CREATE_TASK_LIST 模板输入到 LLM来进行处理 。使用正则表达式re.match(r“^\d+\.”,line)检查输出的每一行是否是编号列表的格式。如果适用,请将该行的文本添加到任务列表中。如果任务列表为空,则返回原始问题。 4. 尝试执行任务 后我们来实际执行一下上面的函数。这次,我们提出的问题是,“请比较A公司的产品X和B公司的产品Y的费用,生成购买1000个便宜的,100个贵的产品的报价。”def main():    question = "请比较A公司的产品X和B公司的产品Y的费用,生成购买1000个便宜的,100个贵的产品的报价。"    task_list = create_task_list(question)    print(task_list)if __name__ == "__main__":    main()结果如下所示。['Retrieval_A:查找 A 公司的产品 X','Retrieval_B:查找B公司的产品Y','Comparator:比较产品X和产品Y的价格','Calculator:计算购买1000个便宜产品时的报价','Calculator:计算购买100个贵的产品时的报价']在任务生成的时候,LLM自己“很好地理解了能做什么”,所以很好地告诉了我们使用哪个工具做什么。这样的多个任务按代理顺序执行,但是多个任务不能用通常使用的LLMSingleActionAgent来处理。现在需要开发自己的代理,如LLMMultiActionAgent。下一次,我们再来讲述通过把生成的任务交给所谓的Multi-action Agent来进行实现!

大模型 ReAct 智仁HRO LangChain Agent

HR 准备好迎接人工智能了吗?随着人工智能的发展,它有望取代数百万个工作岗位,同时创造数百万个新工作岗位。本文详细讨论了人工智能对人力资源服务的影响。 1. 人工智能如何重塑人力资源 人工智能 (AI)是计算机系统创建的能够执行通常需要人类智能才可完成的任务。这涉及学习、推理、处理问题和理解自然语言的能力。 在人力资源服务中使用人工智能,您的日常任务以及人力资源实践的增长和演变将变得可衡量。这包括:  1.1 招聘中的简历解析和候选人匹配 通过评估简历并将其与发布的职位进行比较,人工智能正在帮助企业寻找合格的候选人。 一些基于人工智能的人力资源应用程序不仅仅是自动解析简历。除此之外,他们还使用生成的数据从才人才库中去筛选对应的候选人列表。 从在线面试到性格评估等等,评估过程越来越依赖人工智能。这不仅节省了无数的劳动力时间,而且保证了合格的申请人不会因为人为错误而被忽视。  1.2 人工智能驱动的员工支持机器人 解答与业务规则、人力资源流程、缺勤和薪酬相关的常规问题占据了人力资源团队平均日常工作量的很大一部分。由人工智能驱动的聊天机器人可以7X24小时全天候响应这些查询。因此,人力资源部门将节省时间,员工体验也将得到提升。通过使用大语言模型能够对许多最常见的员工常见问题解答做出快速而准确的答复。   1.3 自动化入职和离职流程 新员工常常会因为文档和协议而感到负担过重。想象一个由人工智能支持的注册平台。 当新人进入公司时,这个平台可以帮助他们。然后,该软件会引导新员工完成必要的文书工作,解释公司政策,甚至安排初始培训。 因此,员工会感到更轻松、更容易被接受。同样,当员工离职时,人工智能可以处理退出调查、归还公司财产以及其他离职任务。这保证了双方的无缝过渡;显然,这是一个双赢的局面。 1.4 学习和员工发展 员工如何看待五年后的自己?人工智能有能力帮助推荐个性化的职业发展培训课程。  通过分析每个员工的数据,比如他们的能力和偏好,人工智能可以根据他们的具体目标定制培训。它能够帮助人力资源经理识别潜在人才或发现/识别准备好晋升的个人。  2. 人力资源部门准备好迎接人工智能了吗? 人工智能 (AI) 将预示着办公工作的新时代,其中数据分析、机器学习和自动化相结合,有助于节省人们的时间并鼓励更高质量的结果。 根据一项全球研究,管理人员预计,由于人工智能和自动化的引入,未来三年内 40% 的员工将需要接受再培训。87% 的受访者认为,生成式人工智能更有可能增强而不是取代员工的职责,其影响因工作职能而异。 这种转变将对人力资源部门产生直接影响,因为公司寻求扩大职责的职位,而个人则随着自己角色的发展而寻找新职位。  当您为人工智能增强的劳动力做好准备时,请问自己这个问题:“我的组织的人力资源部门准备好迎接人工智能了吗?” 如果答案是否定的,那么请考虑采取以下措施:  2.1 重新考虑员工人数和工作范围 对于相同的工作量,只需要较小的团队。在这种情况下,采用人工智能的高管必须预见到随着时间的推移裁员。 人力资源高管将不得不将受人工智能干扰的工作角色重新设计为更利基的多技能通才职位,涵盖更广泛的能力。此外,他们还必须提供更具吸引力的员工价值主张,以吸引这些要求较高的职位的候选人。 2.2 展示AI赋能能力 向员工展示人工智能的变革能力,可以管理他们不喜欢的所有单调的行政和重复性任务,以及它如何让他们体验新的、重要的工作场所互动。如果大规模人工智能实施要取得成功,人力资源团队需要采取的第一步就是克服最初的变革阻力。  2.3 监控人工智能实施进度并分享您的成功 与任何技术一样,引入人工智能一开始似乎很困难。尽管如此,记住您最初采用该技术的原因并敦促您的团队谈论他们的“胜利”和获得的见解还是有帮助的。创建一个您希望通过使用人工智能来增强的关键指标列表,例如您的技能提升努力,然后跟踪您的进度。  2.4 在人工智能支持的工作场所中对员工进行合规培训 无论公司的人工智能政策多么彻底,如果员工不知道如何有效地使用该技术,这些政策都是徒劳的。因此,人力资源部门必须培训员工以保护数据机密性、避免偏见和促进透明度的方式使用人工智能。  3. 人工智能在人力资源领域的优势 变革可能令人生畏,但人工智能工具为人力资源部门提供了许多重要优势,例如改进工作流程和改进决策。  3.1 让人力资源流程更加高效 人工智能可以自动执行繁琐且耗时的任务,使人力资源专业人员能够专注于制定策略。此外,人工智能通过使用人力资源分析和预测分析提供有价值的见解来增强决策。 例如,人工智能可以通过改进筛选和招聘流程来提高招聘效率。算法可以评估简历,识别最合格的候选人,并为招聘人员提供数据以帮助他们做出更明智的招聘决策。  3.2 找到投资回报率最高的优化领域 人工智能可以在人力资源流程中积累和评估数据,从而消除偏见和假设。这意味着您选择理想的候选人或提供出色的薪酬和福利待遇。 例如,人工智能可以将注意力集中在特定因素上,帮助您根据最重要的参数做出决定:  成本:通过强调与成本相关的指标(例如职位发布效率和每次雇用成本)来降低招聘成本。 速度:为了加快招聘速度,请重点关注以加速为主导的关键绩效指标 (KPI),例如招聘时间和招聘时间。 质量:为了提高新员工的质量,请优先考虑与质量相关的 KPI,例如新员工流失率和新员工保留率。 3.3 改善员工体验 借助人工智能,您可以定制员工体验。使用人工智能,他们的疑问可以更快得到解决。 对于常规问题,员工无需安排与人力资源部门的电话或等待电子邮件回复。此外,员工还会收到个性化的入职和培训建议。此外,人工智能工具还可以帮助员工进行职业规划,从而丰富他们的职场经验。  4. AI时代的HR是什么? 在人工智能时代,人力资源专业人员有很多机会改善他们的招聘、培训、数据分析和日常任务。通过拥抱人工智能的潜力并意识到其道德影响,人力资源团队可以在这个令人兴奋的新时代继续蓬勃发展。 在人工智能时代,人力资源职能正在从传统的行政任务转向制定战略决策并利用技术改善员工体验。为了充分利用人工智能的巨大潜力,人力资源专业人员必须提高技能并适应快速变化的环境。  对于人力资源部门来说,人工智能、统计分析和数字工具方面的专业知识的重要性正在迅速上升。这包括理解人工智能的局限性和风险,有能力破译人工智能生成的见解,并将与人工智能相关的调整传达给员工如何工作和执行任务。  5. 人工智能会取代人类工作吗? 事实上,人工智能程序正在工作环境中迅速普及,它们将接管相当多的当前工作。然而,它的作用通常仅限于需要不太复杂推理的重复任务。 根据世界经济论坛的一份报告,虽然人工智能设备将在 2025 年取代约 8500 万个就业岗位,但同年将创造约 9700 万个就业岗位。  员工不应该担心、不信任或害怕人工智能。然而,他们必须增强自己的技能,以避免被人工智能取代。他们必须学习新技能,在自己选择的领域保持相关性,并温习创新和创造力等独特的人类技能。 

大模型 人工智能 人力资源 智仁HRO 人力资源运营

1. 简介这次我们将讲解一下LangChain Agent及其基本操作。LangChain的Agent实现了ReAct式的思维,所以我先从ReAct的解释开始,然后看实际的代码! 2. 关于ReAct 2.1 ReAct是什么? 在解释 ReAct 之前,让我们花点时间思考一下人类的思维过程。当人类思考时,我们巧妙地将言语推理与行动结合起来。你有一种天生的自我调整、制定策略和记忆的能力。例如,在厨房做饭时,你可能会想,“我已经把所有的蔬菜都切好了,所以接下来我会烧水”,或者改变你的计划,“如果我没有盐,我“用酱油和胡椒粉代替吧”。我也会想,“我现在能做什么?”并采取行动寻找答案。通过这样正确地运用“行动”和“思考”,人类可以快速学习新事物,并在不熟悉的情况下做出决定和推理。那么LLM(大规模语言模型)会怎么样?随着技术的最新进步,大模型现在能够像人类一样思考并做出复杂的决策。其中最受关注的是“ReAct”。ReAct是一种结合“推理”和“行动”的方法,旨在让人们像人类一样思考和行动。ReAct 的框架允许大模型在整合周围环境信息的同时进行思考、计划和调整。这使您能够更加灵活、适应性更强,并做出相应的决策。ReAct的灵感来自于整合人类思维和行为,有望帮助大规模语言模型解决困难任务。 2.2 ReAct实现提示 现在,我们来看看实现ReAct式思维的提示词模板是如何编写的。PREFIX = """Answer the following questions as best you can. You have access to the following tools:"""FORMAT_INSTRUCTIONS = """Use the following format:Question: the input question you must answerThought: you should always think about what to doAction: the action to take, should be one of [{tool_names}]Action Input: the input to the actionObservation: the result of the action...(this Thought/Action/Action Input/Observation can repeat N times)Thought: I now know the final answerFinal Answer: the final answer to the original input question"""SUFFIX = """Begin!Question: {input}Thought:{agent_scratchpad}"""经过Question, Thought, Action, Action Input, Observation, Thought的过程最终输出Final Answer。在某些情况下,Action/Action Input/Observation 过程可能会重复多次。这就是LangChain的Agent提示模板的基本结构。基于这个形式,您可以自由定制创建您自己的Agent。 3. 关于Agent 3.1 如何使用Agent 使用LangChain Agent最简单的方式就是调用initialize_agent。在这种情况下,返回值是AgentExecutor,因此您无需自己调用AgentExecutor即可得到答案。chat_agent = initialize_agent(    tools,    llm=LLM,    agent = "zero-shot-react-description",    verbose=True,    system_message="ou are a kind assistant. Please answer in Chinese!",)question = 'Please tell me about Vegeta'result = chat_agent.run(question)print(result)这里,agent我们指的是代理类型,标准有多种代理类型。示例:ZERO_SHOT_REACT_DESCRIPTION、CONVERSATIONAL_REACT_DESCRIPTION、OPENAI_MULTI_FUNCTIONS、... 3.2 定制Agent 实际中在开发聊天机器人等应用程序时,总是有详细的要求,而且实际情况是需要进行一些定制。需要定制的东西一般是PromptTemplate、OutputParser、Agent、AgentExecutor。下面是如何调用自定义模块的示例代码。# CustomPromptTemplate    self.prompt_agent = CustomPromptTemplate(            template=TEMPLATE_AGENT,            tools=tools,            input_variables=["input", "intermediate_steps", "history"]    )# Custom Output Parser    output_parser = CustomOutputParser()# Custom Agent    llm_chain = LLMChain(llm=self.LLM, prompt=self.prompt_agent)    tool_names = [tool.name for tool in tools]    agent = CustomAgent(        llm_chain=llm_chain,        output_parser=output_parser,        stop=["\nObservation:"],        allowed_tools=tool_names    )# CustomAgent Executor    self.agent_executor = CustomAgentExecutor.from_agent_and_tools(        agent=agent,         tools=tools,         verbose=True,         memory=self.memory,        handle_parsing_errors=False    ) 3.3 LLMSingleActionAgent下面我们通过LLMSingleActionAgent来对自定义Agent的作用做个了解。class LLMSingleActionAgent(BaseSingleActionAgent):    """Base class for single action agents."""    llm_chain: LLMChain    """LLMChain to use for agent."""    output_parser: AgentOutputParser    """Output parser to use for agent."""    stop: List[str]    """List of strings to stop on."""    def plan(        self,        intermediate_steps: List[Tuple[AgentAction, str]],        callbacks: Callbacks = None,        **kwargs: Any,    ) -> Union[AgentAction, AgentFinish]:        """Given input, decided what to do.        Args:            intermediate_steps: Steps the LLM has taken to date,                along with the observations.            callbacks: Callbacks to run.            **kwargs: User inputs.        Returns:            Action specifying what tool to use.        """        output = self.llm_chain.run(            intermediate_steps=intermediate_steps,            stop=self.stop,            callbacks=callbacks,            **kwargs,        )        return self.output_parser.parse(output)这里要关注的是plan方法。 返回值为 AgentAction 或 AgentFinish。 LLMSingleActionAgent内部调用LLMChain,根据ReAct进行思考的同时决定实际的动作。 如果有要采取的操作,LLMChain 将通过 output_parser 返回 AgentAction;如果想法完成,则返回 AgentFinish。这是Agent的主要作用。 你可以根据这个来进行自由定制。 例如,如果你想让它成为多操作,你可以将其更改为返回多个操作,或者你可以让LLMChain仅在某些条件下工作。 3.4 关于AgentExecutor AgentExecutor的作用是实际执行动作并获取答案。 如上面模板示例中所述,根据需要重复执行“Thought”、“Action”、“Action Input”和“Observation”。class AgentExecutor(Chain):    """Agent that is using tools."""    def _take_next_step(        self,        name_to_tool_map: Dict[str, BaseTool],        color_mapping: Dict[str, str],        inputs: Dict[str, str],        intermediate_steps: List[Tuple[AgentAction, str]],        run_manager: Optional[CallbackManagerForChainRun] = None,    ) -> Union[AgentFinish, List[Tuple[AgentAction, str]]]:        """Take a single step in the thought-action-observation loop.        Override this to take control of how the agent makes and acts on choices.        """        for agent_action in actions:                # We then call the tool on the tool input to get an observation                observation = tool.run(                    agent_action.tool_input,                    verbose=self.verbose,                    color=color,                    callbacks=run_manager.get_child() if run_manager else None,                    **tool_run_kwargs,                )            result.append((agent_action, observation))        return resultfor agent_action in actions:部分有一个action循环(换句话说,AgentExecutor本身支持多action),而在observation = tool.run(...)部分,选择的工具实际上是作为一个action来执行的.您可以看到我们正在得到一个Observation(答案)。 4. 总结 这次,我们介绍了ReAct的概念,并讲解了ReAct框架是如何在LangChain Agent中的实现。

大模型 ReAct 智仁HRO LangChain Agent

生成式人工智能(Generative Artificial Intelligence)已经成为世界范围内的热门话题,在我们公司,它不仅开始应用于我们的开发工程团队,还开始应用在销售团队上。生成式人工智能可大大提高效率和生产力。在这篇文章中,我们将介绍生成式人工智能对人力资源外包和劳动力领域的影响。 1. 什么是生成式人工智能? 生成式人工智能是一种可以通过从数据集中学习生成文本、图像和音乐等各种内容的人工智能。如果你问一个问题,AI会通过总结各种信息给你一个简洁的答案,以前需要花费时间或必须由其他人完成的事情现在只需输入简单的中文即可立即获得,这预计将导致工作方式的重大改革。最近成为热门话题的百度文心一言提供了生成式人工智能的接口,通过使用接口可简单的实现各类聊天机器人。LLM擅长自然语言生成,例如句子的完善和问题的回答。然而,他们不擅长解决复杂的数学问题或高级的抽象思维,并且不了解学习数据中未包含的信息。因此,LLM的输出高度依赖于训练数据的质量和范围。 2. 关于生成式人工智能的使用 2.1 在公司内部使用的原因 虽然文心一言很方便,但如果启用历史记录功能,输入的信息将用于学习,因此始终存在内部机密信息被泄露到外部的风险。为了防止这种风险,最好使用文心一言API,其中输入的信息不用于学习,但对于一般的人员来说适用API的难度就比较高。 2.2 创建 JD(职位描述) “JD Creation”是一个我们在智仁HRO的招聘需求发布中增加的新功能,只需输入职位标题后即可创建出适合职位描述。这样针对过去没有招聘经验的操作人员来说,通过这种方式创建JD基础,只需进行一些修改就可以轻松创建JD。 3. 生成式人工智能在人力资源和劳工事务中的未来应用 3.1 未来预计利用的领域 除了上面提到的创建JD之外,在人力资源/人事劳务领域还可以考虑以下使用方法(一些例子)。人事劳务方向 各类法规概要的生成 有关法规问题的解答 根据内部知识回答问题招聘方向 候选人简历或工作经历的摘要 筛选招聘候选人 候选人信息收集 为候选人提出合适的面试问题 面试视频自动转录→面试内容总结与评价人力资源方向 员工数据分析 员工培训资料的生成 3.2 人力资本管理所需的人事信息可视化 生成式人工智能一个特别大的影响是它极大地降低了非工程师简单应用程序开发和代码生成的门槛。人力资源和劳动事务是公司内部唯一可以管理所有员工信息的部门。另一方面,为了利用员工信息,需要统计知识和Python、R、SQL等处理信息的语言知识,这是一个非常高的门槛,而智能依赖于服务内提供的统计数据。然而,通过使用生成式人工智能,生成 Python 和 SQL 代码变得更加容易,从而比以往更容易分析从智仁HRO和各种人才管理系统中提取的信息并将其以图表等形式可视化。对于创建人力资本管理所需的人事信息有很大好处。 4. 利用生成式人工智能的挑战和障碍 4.1 提示质量对答案的影响 虽然如果使用得当,生成式人工智能会非常有用,但它需要技能来理解 LLM 的特征并编写适当的提示。然而,其行为仍有许多方面尚不清楚,响应水平将在很大程度上取决于用户的水平。如以下两点会影响到回答的质量因为更直接的上下文被赋予稍强的权重,所以上下文往往具有更大的影响力。最好将信息分解并有秩序地给出,而不是一次处理大量信息。虽然有一些像上面这样的信息,但有很多事情并不清楚实际情况,并且有可能发生变化,因此需要随时了解最新信息。 5. 未来人力资源外包和劳务事务所需的技能 最后,根据目前所说的来讨论一下未来人力资源和劳工事务中需要的技能。 5.1 语言能力 这里的语言能力主要是指使用生成式人工智能能够理解的语言的能力。正如前面《提示质量对答案的影响》中提到的,需要编写易于生成式人工智能理解的提示,并留下易于学习的文档。为此,不要写多余的句子,能够用简短的句子进行解释,并在了解主语和动词的情况下创建句子等等都是需要的。 5.2 销售能力、人力能力、营销能力 生成式人工智能已经达到可以通过美国律师考试和医生考试的水平。例如,在社会和劳工顾问的工作中,生成式人工智能比社会和劳工顾问拥有更多的信息,如果你向生成式人工智能提问,你将能够更快地得到合适的答案。当然,有很多工作是法律只允许具有特定国家资格的人,比如专业资格,所以生成式人工智能不会立即夺走工作岗位,但有可能大部分工作都会被生成式人工智能取代。公司内部也同样如此,包括公司内部的一般劳动咨询(工资、出勤等法律意见)、各种申请方式的咨询回复、入职和离职时的人工处理(提交材料和退回材料,询价回复)等很有可能被生成式人工智能取代。在这样的时代里,人类应该负责的工作量将大大减少,并且需要占用少数可用的空位。因此,最终我们需要有“推销自己的销售技能”、“赢得人们信任的人际技能”以及“寻找和创造需要我们的地方的营销技能”。 最终,生成式人工智能将负责每项工作的专业知识,而人类可能需要熟练地使用生成式人工智能。

HRO系统 人工智能 大模型 HR Saas

大模型的横空出世给各行各业都带来了巨大的影响。这种大型语言模型,以其强大的自然语言处理能力和深度学习能力,正在改变着人们的生活和工作方式。人力资源部门可以利用 大模型等人工智能工具来简化流程并提高效率。大模型可以通过多种方式成为人力资源专业人员的强大工具,包括自动执行重复性任务、为员工提供实时支持以及增强整体员工体验。让我们深入探讨 大模型在人力资源领域的一些具体用例,并讨论这些类型的语言模型可以为整个人力资源部门和组织带来的好处。 1. 招聘 人力资源部门可以利用大模型简化运营、改善候选人体验并做出更明智的招聘决策。大模型在招聘工作中的应用主要集中在以下三个方面。一. 大模型来自动编写有吸引力的岗位描述,使招聘岗位可收到更多的求职者的简历投递。二. 大模型可以自动执行招聘过程中的重复性任务,例如筛选简历和安排面试。自动化这些类型的任务可以让人力资源专业人员腾出时间来专注于更具战略性的活动。三. 大模型还可以通过提供实时支持并回答有关公司和申请流程的常见问题来帮助候选人参与。人力资源专业人员还可以使用大模型根据技能、经验和教育程度来识别可能适合组织的潜在候选人。 2. 员工入职 人力资源部门可以使用大模型来改善新员工的入职体验,减少人力资源团队成员的工作量,并确保新员工能够获得在新角色中取得成功所需的资源。人力资源团队可以设置大模型为新员工提供实时支持和指导,包括回答有关公司政策、程序和福利的常见问题,并提供完成所需文书工作的指导。大模型还可以帮助自动执行管理任务,例如安排入职培训或向新员工发送有关所需培训的提醒。 3. 培训 通过在培训中利用大模型,人力资源部门确保员工能够获得开发工作所需的新技能和知识所需的资源。大模型可以让员工即时访问培训材料并回答有关研讨会和计划的问题。人力资源专业人员还可以使用大模型自动执行管理任务,包括安排培训课程或向员工提供有关即将发生的活动的提醒。大模型甚至可以根据员工的具体需求和技能组合为他们创建个性化的培训计划。 4. 聊天机器人 大模型可用于为人力资源部门开发对话式聊天机器人,以改善整体员工体验。通过人工智能支持的聊天机器人,员工可以获得有关福利、假期政策或工资等常见人力资源相关问题的即时支持。 5. 合规性 人力资源专业人员还可以使用大模型确保他们的人力资源政策和实践一致、准确并符合国家法规,从而避免因不合规而可能导致的法律或声誉风险。大模型可以协助向员工提供有关合规相关事宜的最新信息,例如就业法、工资和税务法规以及健康和安全协议。该模型还可以帮助人力资源部门跟踪和监控员工对人力资源政策的遵守情况,例如出勤、休假请求和工作时间。我们确信一件事大语言模型和人工智能将会颠覆人力资源角色,并为其提供新的机会。

大模型 HR Saas 人工智能