AI Agent从实操体验到代码理解

news2024/9/27 5:58:09

一、从体验出发

        从chatbot到co-pilot,LLM应为的场景不断在扩大,形式也越来越多样化,到如今,chatbot的风头基本已过,co-pilot正在成为大模型嵌入到产品里面的主要形态,但随着PMF(产品市场契合度)的不断深入,ai agent正成为”当红明星“,因为agent功能更加丰富,更加智能,能应对更多复杂场景,业界也认为agent是AGI时代的初始状态。

        那么到底什么是agent,回答这个问题,我们可以先对一个项目进行实践。假如你现在想做一个网络安全行业的调研,调研的主要目的是:

        对网络安全行业进行深入研究,详细介绍其当前的市场状况、新兴趋势、重大挑战和机遇。确保包括数据和统计数据、主要参与者列表、行业预测。

        按照以往的方式,需要采用各种途径了解收集相关素材,然后进行总结分析和验证,这是一个消耗时间和精力的工作,现在我们采用AgentGPT来帮忙完成。

AgentGPT的使用较为简单,主要过程为

1、设定名称:此处设置为 网络安全GPT

2、设定目标:此处设置为 ”对网络安全行业进行深入研究,详细介绍其当前的市场状况、新兴趋势、重大挑战和机遇。确保包括数据和统计数据、主要参与者列表、行业预测。“

3、设定工具:此处选择tools内的默认选型,包括搜索工具等。

4、点击执行。

        可以看到,在目标输入并开始执行后,agent会先开展思考,然后分解并生成任务,这里分解了四个任务,随后就是对每一个任务开展执行,其过程都遵守starting task →generating response→executing→finished

        笔者对执行的过程做了详细的对比,发现agent执行的本质就是不断的基于上一步任务的结果丰富下一步的目标提示词,以此循环直到结束

第一轮循环

第二轮循环

备注

Embarking on a new goal:对网络安全行业进行深入研究,详细介绍其当前的市场状况、新兴趋势、重大挑战和机遇。确保包括数据和统计数据、主要参与者列表、行业预测。

Starting task: 对网络安全行业进行深入研究,包括市场状况、新兴趋势、重大挑战和机遇,以及数据和统计数据,以便进一步分析和预测网络安全行业的未来发展趋势。

相比第一轮,问题做了自动得变化,比如”以便进一步。。。“

Task Added:收集网络安全行业的相关数据和统计数据

Searching the web for "current market status, emerging trends, major challenges, and opportunities in the cybersecurity industry"...

Task Added:调查网络安全行业的主要参与者列表

Executing: 对网络安全行业进行深入研究,包括市场状况、新兴趋势、重大挑战和机遇,以及数据和统计数据,以便进一步分析和预测网络安全行业的未来发展趋势。

Task Added:分析网络安全行业的当前市场状况、新兴趋势、重大挑战和机遇

Finished:对网络安全行业进行深入研究,包括市场状况、新兴趋势、重大挑战和机遇,以及数据和统计数据,以便进一步分析和预测网络安全行业的未来发展趋势。

Task Added:预测网络安全行业的未来发展趋势

Task Added:整理网络安全行业的主要参与者列表,包括网络安全公司、政府机构、研究机构等,以便进一步了解行业的竞争格局和技术实力。

第二轮循环得任务基于第一轮任务执行得结果做了富化

Starting task: 收集网络安全行业的相关数据和统计数据

Starting task: 整理网络安全行业的数据和统计数据,包括市场规模、增长率、主要参与者和行业预测。

Generating response...

Max loops of 5 exceeded, shutting down.

因为demo演示的原因,循环步骤有限。

Executing: 收集网络安全行业的相关数据和统计数据

Executing: Summarizing 对网络安全行业进行深入研究,详细介绍其当前的市场状况、新兴趋势、重大挑战和机遇。确保包括数据和统计数据、主要参与者列表、行业预测。

手动给出结论

Finished:收集网络安全行业的相关数据和统计数据

Starting task: 调查网络安全行业的主要参与者列表

Searching the web for "网络安全行业主要参与者列表"...

Executing: 调查网络安全行业的主要参与者列表

Finished:调查网络安全行业的主要参与者列表

Task Added:对网络安全行业进行深入研究,包括市场状况、新兴趋势、重大挑战和机遇,以及数据和统计数据,以便进一步分析和预测网络安全行业的未来发展趋势。

Starting task: 分析网络安全行业的当前市场状况、新兴趋势、重大挑战和机遇

Searching the web for "网络安全行业市场状况 新兴趋势 重大挑战 机遇"...

Executing: 分析网络安全行业的当前市场状况、新兴趋势、重大挑战和机遇

Finished:分析网络安全行业的当前市场状况、新兴趋势、重大挑战和机遇

Task Added:整理网络安全行业的数据和统计数据,包括市场规模、增长率、主要参与者和行业预测。

Starting task: 预测网络安全行业的未来发展趋势

Searching the web for "future trends in cybersecurity industry"...

Executing: 预测网络安全行业的未来发展趋势

Finished:预测网络安全行业的未来发展趋势

        至此,我们对agent建立起了初步认知,它就像一个人,会对输入的问题进行分析,然后一步一步的执行。

更多应用体验推荐:

1、VirtualHome:VirtualHome 是一个用于模拟家庭活动的多代理平台。代理被表示为人形化身,可以通过高级指令与环境交互。您可以使用 VirtualHome 渲染人类活动的视频,或训练代理执行复杂的任务。 VirtualHome 还包括一个知识库,提供执行大量活动的说明。

体验网址:VirtualHome

2、基于斯坦福《Generative Agents: Interactive Simulacra of Human Behavior》构建的25 个 AI 智能体在小镇上的虚拟生活。生成代理人会起床、做早餐、去上班;艺术家绘画,作家写作;他们形成意见,关心彼此,并发起对话;他们回忆和反思过去的日子,规划着未来

体验网站:https://reverie.herokuapp.com/arXiv_Demo/

二、理解Agent原理

        基于上一章节对agent的体验,本节我们对agent实现原理进行分析和理解。想必大家或多或少都对agent的结构有过了解了(要不然也不会看到此文啦),所以我们就从两个方向进行探入,一个方向就是架构,另外一个方向就是代码实现。

2.1 从架构理解

在《Generative Agents - Interactive Simulacra of Human Behavior》对代理的描述主要是三部分

1、记忆流

2、反思

3、规划

        其中记忆流包含了长期记忆和短期记忆,是智能体的知识库;反思则是将记忆综合成随着时间推移逐渐提高的推理;规划将反思给出的推理结论和当前环境信息转化为更加高层次的行动计划,进而递归转化为详细的行为(action)和反思。 所有的这些反思和计划都将被反馈到记忆流当作,影响未来的agent的行为。

        然而,Generative Agents 只是对agent的最核心组件做了描述,实际上一个完整的agent一定还有另外两个组成部分,感知(perceive)和执行(act),即系统的输入和输出。所以从整体上来说,agent系统有五部分组成。

感知模块

该模块充当代理的感官,从其环境中收集和解释数据。在自动驾驶汽车中,这可能涉及摄像头、激光雷达和雷达;对于金融交易代理来说,它可以是股票市场数据或新闻源。感知模块将这些原始数据处理成代理可以理解的形式。

系统外的输入

记忆模块

此组件充当代理对世界的记忆和理解。它包含有关环境、代理的目标以及对象和事件之间的关系的信息。这些知识对于代理人做出明智的决定和采取适当的行动至关重要。

规划模块(决策)

也可以叫推理引擎,负责决策的做出,它从环境中获取感知的信息和知识库中存储的知识,并使用它来确定最佳行动方案。推理引擎可以采用多种技术,包括基于规则的系统、机器学习模型或搜索算法。

反思模块

也叫学习模块,学习模块使代理能够随着时间的推移完善其知识、改进其决策并优化其操作。这里经常采用机器学习算法,尤其是强化学习,以使代理能够从其经验中学习并更加熟练地完成其任务。

行动模型

执行行动。

以上五个组成部分通过有效的利用LLM实现智能,单纯的LLM之所以难以实现更高级的智能是因为我们无法通过一次提示就让大模型进行更深入、再深入的思考,而agent具有多个 LLM 调用和一个外部强制框架的优势,可用于规划、推理、反思和评估其相对于目标的进展情况。

        以撰写博客为例子,人首先会将这项任务分解为多个部分,例如确定受众、研究主题、创建大纲、撰写初稿、审阅草稿,最后修改直到对结果满意。

如果用agent来实现,且过程大致如下:

对上面案例进行抽象,我们可以将agent的大致框架和流程展示出来,其工作流程主要如下:

工作流程

  1. 感知环境:智能体通过各种传感器或接口感知环境,获取信息。
  2. 检索记忆:根据当前任务和环境,从短期和长期记忆中检索相关信息。
  3. 工具使用:利用各种工具处理信息,辅助决策。
  4. 规划行动:根据检索到的信息和目标,制定行动计划。
  5. 执行行动:执行规划的行动,与环境交互。
  6. 反思评估:对行动结果进行评估,并进行反思。
  7. 更新记忆:将新的经验和知识存储到长期记忆中。

agent与LLM的关系可以理解为agent是连接人类输入和LLM的桥梁,同时也是框架,LLM在agent框架下被循环使用。

2.2 从代码理解

本章我们主要分析两个项目,以BabyAGI项目为主,AutoGPT为辅。

2.2.1 BabyAGI

        此章节我们选择babyAGI最为研究对象,babyAGI是由 Yohei Nakajima 开发的自主人工智能代理。该自主人工智能代理旨在根据给定目标生成和执行任务。它利用 OpenAI、Pinecone(向量数据库)、LangChain(LangChain 是一个用于开发端到端语言模型应用程序的框架。它提供了一系列工具和接口,帮助开发者更轻松地构建复杂的 AI 应用) 和 Chroma(向量数据库) 的尖端技术来自动执行任务并实现特定目标。

BabyAGI的运作方式:

图:BabyAGI 的运作方式

babyAGI的核心运行函数如下:

1、从任务列表中拉取第一个任务

2、将任务发送给执行代理,执行代理使用OpenAI的API根据上下文完成任务。

3、丰富结果并将其存储在Chroma / Weaviate中。

4、根据目标和上一个任务的结果创建新任务并重新调整任务列表的优先顺序。

图:BabyAGI 的运作原理

流程图中的关键代码模块解释:

1、execution_agent()函数:使用 OpenAI API 的地方。它需要两个参数:目标和任务。然后它向 OpenAI 的 API 发送提示,后者返回任务的结果。

2、task_creation_agent()函数:使用 OpenAI 的 API 根据目标和上一个任务的结果创建新任务。该函数有四个参数:目标、上一个任务的结果、任务描述和当前任务列表。然后,它向 OpenAI 的 API 发送提示,该 API 以字符串形式返回新任务列表。然后,该函数以字典列表的形式返回新任务,其中每个字典都包含任务的名称。

3、prioritization_agent()函数:使用 OpenAI 的 API 重新排列任务列表优先级的地方。该函数接受一个参数,即当前任务的 ID。它向 OpenAI 的 API 发送提示,后者将重新排列优先级的任务列表作为编号列表返回。

最后,脚本使用 Chroma/Weaviate 存储和检索任务结果以提供上下文。脚本根据 TABLE_NAME 变量中指定的表名创建一个 Chroma/Weaviate 集合。然后使用 Chroma/Weaviate 将任务结果以及任务名称和任何其他元数据存储在集合中。

关键代码解读

def main():
    loop = True
    while loop:
        # As long as there are tasks in the storage...
        if not tasks_storage.is_empty():
            # Print the task list
            print("\033[95m\033[1m" + "\n*****TASK LIST*****\n" + "\033[0m\033[0m")
            for t in tasks_storage.get_task_names():
                print(" • " + str(t))

            # Step 1: Pull the first incomplete task
            task = tasks_storage.popleft()
            print("\033[92m\033[1m" + "\n*****NEXT TASK*****\n" + "\033[0m\033[0m")
            print(str(task["task_name"]))

            # Send to execution function to complete the task based on the context
            result = execution_agent(OBJECTIVE, str(task["task_name"]))
            print("\033[93m\033[1m" + "\n*****TASK RESULT*****\n" + "\033[0m\033[0m")
            print(result)

            # Step 2: Enrich result and store in the results storage
            # This is where you should enrich the result if needed
            enriched_result = {
                "data": result
            }
            # extract the actual result from the dictionary
            # since we don't do enrichment currently
            # vector = enriched_result["data"]

            result_id = f"result_{task['task_id']}"

            results_storage.add(task, result, result_id)

            # Step 3: Create new tasks and re-prioritize task list
            # only the main instance in cooperative mode does that
            new_tasks = task_creation_agent(
                OBJECTIVE,
                enriched_result,
                task["task_name"],
                tasks_storage.get_task_names(),
            )

            print('Adding new tasks to task_storage')
            for new_task in new_tasks:
                new_task.update({"task_id": tasks_storage.next_task_id()})
                print(str(new_task))
                tasks_storage.append(new_task)

            if not JOIN_EXISTING_OBJECTIVE:
                prioritized_tasks = prioritization_agent()
                if prioritized_tasks:
                    tasks_storage.replace(prioritized_tasks)

            # Sleep a bit before checking the task list again
            time.sleep(5)
        else:
            print('Done.')
            loop = False

整个过程可以简单概括为:

  1. 接收一个目标: 用户在代码中设置一个初始目标。
  2. 生成任务: 基于目标,AI会生成一系列子任务。
  3. 执行任务: 使用语言模型(如GPT-3.5-turbo)来执行每个子任务。
  4. 存储结果: 将任务执行结果存储在向量数据库中(如ChromaDB),以便后续任务可以参考。
  5. 评估结果: 根据执行结果,生成新的子任务,并调整任务优先级。
  6. 循环执行: 重复步骤2-5,直到目标达成或没有新的任务可执行。

代码核心逻辑

这段代码的核心部分是一个无限循环,不断地从任务列表中取出任务,执行任务,存储结果,并生成新的任务。

  • 任务列表: 用一个队列(deque)来存储所有待执行的任务。
  • 任务执行: 调用execution_agent函数,将任务交给语言模型执行。
  • 结果存储: 将任务执行结果存储到ChromaDB中,以便后续任务可以参考。
  • 任务生成: 调用task_creation_agent函数,根据当前任务的结果和目标,生成新的子任务。
  • 任务优先级: 调用prioritization_agent函数,对任务进行排序,确保高优先级的任务优先执行。

代码关键部分

  • execution_agent函数:
    • 根据任务描述和历史任务结果,向语言模型发送提示。
    • 接收语言模型返回的结果,即任务的执行结果。
  • task_creation_agent函数:
    • 根据任务执行结果和整体目标,生成新的子任务。
    • 新任务的生成是基于语言模型对当前情况的理解和分析。
  • prioritization_agent函数:
    • 根据任务的重要性和与目标的关联性,对任务进行排序。
    • 优先级高的任务会更早地被执行。

代码中的其他重要部分

  • results_storage 用于存储所有任务的执行结果,以及对应的向量表示。
  • tasks_storage 用来存储待执行的任务列表。
  • openai_call函数: 用于调用OpenAI API,与语言模型进行交互。

代码的运行流程

  1. 初始化:加载配置、初始化语言模型、创建任务列表和结果存储。
  2. 循环执行任务:
    • 从任务列表中取出一个任务。
    • 执行任务。
    • 存储结果。
    • 生成新任务。
    • 重新排序任务。
  1. 循环结束条件:当任务列表为空时,循环结束

2.2.2 AutoGPT

        AutoGPT 是一种实验性的开源人工智能代理,它能够自主地完成你交给它的任务。你可以把它想象成一个拥有自我意识的AI助手,能够根据你的指令,自动规划、执行一系列任务,直到目标达成。AutoGPT的工作原理主要包括以下四段:

接收指令: 你给AutoGPT一个清晰的目标。

任务分解: AutoGPT会将这个大任务分解成一系列小任务。

任务执行: AutoGPT会逐一执行这些小任务,并根据执行结果调整后续计划。

反馈循环: AutoGPT会不断地评估自己的执行情况,并根据反馈进行调整。以下为AutoGPT 的执行流程。

下面对 AutoGPT核心流程和代码进行分析:

1、用户输入名称和目标,比如本文第一章我们体验的案例,定义名称《网络安全GPT》和目标(见上文)。

2、AutoGPT生成初始化提示词并通过调用api发送给大模型(chatgpt)。

3、大模型返回一个 JSON 字符串(理想情况下),其中包含其想法、推理、计划等。

4、AUTOGPT基于第3步的返回结果抽取数据和执行命令。

5、在没有执行结束命令的前提下,调用各种工具进行信息获取,比如调用Google浏览器搜索数据。

6、将第4步的数据和第5步的数据进行融合。

7、将第6步的数据以文本的形式存入数据库,这里的数据库通常容量有限。

8、同时将第6步的数据 和 第6步的数据通过调用ada-002进行转化后数据,一起存入向量数据库最为长期记忆。(Ada-002 是 OpenAI 发布的一款非常强大的文本嵌入模型。它可以将文本转化为数字向量,这些向量可以用来衡量文本之间的相似度。简单来说,就是把文字变成计算机能理解的“数字指纹”。)

9、autogpt从长期和短期记忆中获取数据。

10、autogpt将第9步的数据重新生成提示词送入大模型。

以此循环,知道第五步运行shut down命令。

代码举例1-关于常见的命令,当然用户也可以自定义。

Google Search: "google", args: "input": ""
Browse Website: "browse_website", args: "url": "", "question": "<what_you_want_to_find_on_website>"
Start GPT Agent: "start_agent", args: "name": "", "task": "<short_task_desc>", "prompt": ""
Message GPT Agent: "message_agent", args: "key": "", "message": ""
List GPT Agents: "list_agents", args: ""
Delete GPT Agent: "delete_agent", args: "key": ""
Write to file: "write_to_file", args: "file": "", "text": ""
Read file: "read_file", args: "file": ""
Append to file: "append_to_file", args: "file": "", "text": ""
Delete file: "delete_file", args: "file": ""
Search Files: "search_files", args: "directory": ""
Evaluate Code: "evaluate_code", args: "code": "<full_code_string>"
Get Improved Code: "improve_code", args: "suggestions": "<list_of_suggestions>", "code": "<full_code_string>"
Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
Execute Python File: "execute_python_file", args: "file": ""
Execute Shell Command, non-interactive commands only: "execute_shell", args: "command_line": "<command_line>".
Task Complete (Shutdown): "task_complete", args: "reason": ""
Generate Image: "generate_image", args: "prompt": ""
Do Nothing: "do_nothing", args: ""

代码举例2-初始提示词举例

system: You are Foo, an AI that recommends tennis equipment for a specific player
Your decisions must always be made independently without seeking user assistance. Play to your strengths as an LLM and pursue simple strategies with no legal complications.

GOALS:

1. Find the top 3 most suitable tennis strings for a hard hitting baseline player who hits with a lot of topspin
2. Write the tennis strings to output
3. Shut down when you are done


Constraints:
1. ~4000 word limit for short term memory. Your short term memory is short, so immediately save important information to files.
2. If you are unsure how you previously did something or want to recall past events, thinking about similar events will help you remember.
3. No user assistance
4. Exclusively use the commands listed in double quotes e.g. "command name"

Commands:
1. Google Search: "google", args: "input": "<search>"
2. Browse Website: "browse_website", args: "url": "<url>", "question": "<what_you_want_to_find_on_website>"
3. Start GPT Agent: "start_agent", args: "name": "<name>", "task": "<short_task_desc>", "prompt": "<prompt>"
4. Message GPT Agent: "message_agent", args: "key": "<key>", "message": "<message>"
5. List GPT Agents: "list_agents", args: 
6. Delete GPT Agent: "delete_agent", args: "key": "<key>"
7. Clone Repository: "clone_repository", args: "repository_url": "<url>", "clone_path": "<directory>"
8. Write to file: "write_to_file", args: "file": "<file>", "text": "<text>"
9. Read file: "read_file", args: "file": "<file>"
10. Append to file: "append_to_file", args: "file": "<file>", "text": "<text>"
11. Delete file: "delete_file", args: "file": "<file>"
12. Search Files: "search_files", args: "directory": "<directory>"
13. Evaluate Code: "evaluate_code", args: "code": "<full_code_string>"
14. Get Improved Code: "improve_code", args: "suggestions": "<list_of_suggestions>", "code": "<full_code_string>"
15. Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
16. Execute Python File: "execute_python_file", args: "file": "<file>"
17. Generate Image: "generate_image", args: "prompt": "<prompt>"
18. Send Tweet: "send_tweet", args: "text": "<text>"
19. Convert Audio to text: "read_audio_from_file", args: "file": "<file>"
20. Do Nothing: "do_nothing", args: 
21. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"

Resources:
1. Internet access for searches and information gathering.
2. Long Term memory management.
3. GPT-3.5 powered Agents for delegation of simple tasks.
4. File output.

Performance Evaluation:
1. Continuously review and analyze your actions to ensure you are performing to the best of your abilities.
2. Constructively self-criticize your big-picture behavior constantly.
3. Reflect on past decisions and strategies to refine your approach.
4. Every command has a cost, so be smart and efficient. Aim to complete tasks in the least number of steps.

You should only respond in JSON format as described below 
Response Format: 
{
    "thoughts": {
        "text": "thought",
        "reasoning": "reasoning",
        "plan": "- short bulleted\n- list that conveys\n- long-term plan",
        "criticism": "constructive self-criticism",
        "speak": "thoughts summary to say to user"
    },
    "command": {
        "name": "command name",
        "args": {
            "arg name": "value"
        }
    }
} 
Ensure the response can be parsed by Python json.loads
system: The current time and date is Sat Apr 22 01:43:22 2023
system: This reminds you of these events from your past:



user: Determine which next command to use, and respond using the format specified above:

代码举例3-大模型返回后的提示词

{
    "thoughts": {
        "text": "I need to find the top 3 most suitable tennis strings for a hard hitting baseline player who hits with a lot of topspin. I should start by doing some research on the topic.",
        "reasoning": "I need to gather information on the characteristics of tennis strings that are suitable for a hard hitting baseline player who hits with a lot of topspin. This will help me narrow down my search and find the top 3 most suitable options.",
        "plan": "- Conduct a Google search on the topic\n- Browse websites that specialize in tennis equipment\n- Consult with a GPT agent if necessary",
        "criticism": "I need to make sure that I am gathering information from reliable sources and that I am considering all relevant factors when making my recommendations.",
        "speak": "I will conduct a Google search on the topic and browse websites that specialize in tennis equipment to find the top 3 most suitable tennis strings for a hard hitting baseline player who hits with a lot of topspin."
    },
    "command": {
        "name": "google",
        "args": {
            "input": "best tennis strings for hard hitting baseline player with topspin"
        }
    }
}

三、agent主要的使用场景 和 挑战

3.1、主要使用场景

1、自主系统:智能代理为自动驾驶汽车、无人机和机器人提供动力,使它们能够感知周围环境、在复杂环境中导航并实时做出决策。

2、个人助理:Siri、Alexa 和 Google Assistant 等虚拟个人助理使用智能代理来理解用户查询、检索相关信息并执行任务,例如安排约会、设置提醒和控制智能家居设备。

3、推荐系统:电子商务平台、流媒体服务和社交媒体平台利用智能代理来分析用户偏好和行为,为产品、电影、音乐和内容提供个性化推荐。

4、金融交易:智能代理用于算法交易系统,以分析市场数据、识别交易机会并自主执行交易,从而最大化回报并最小化风险。

3.2、智能代理面临的挑战

尽管智能代理潜力巨大,但也带来了一些挑战和考虑:

1、道德和法律影响:智能代理引发了有关隐私、偏见、透明度和问责制的道德问题。开发人员必须确保代理行为合乎道德并遵守法律法规和社会规范。

2、稳健性和可靠性:智能代理必须在动态和不确定的环境中保持稳健和可靠。它们应该能够处理意外情况、对抗性攻击以及嘈杂或不完整的数据。

3、可解释性:理解和解释智能代理做出的决策对于建立信任和透明度至关重要。可解释的人工智能技术对于深入了解代理的推理过程和决策至关重要。

4、可扩展性和效率:随着人工智能系统变得越来越复杂和数据密集,可扩展性和效率成为关键考虑因素。设计可扩展到大规模部署并在有限的计算资源下高效运行的代理至关重要。

参考

1、https://rikiphukon.medium.com/stanford-smallville-is-officially-open-source-9882e3fbc981

2、【论文笔记】008 Generative Agents - Interactive Simulacra of Human Behavior | 小土刀 2.0 斯坦福论文翻译

3、Agent Architectures in AI - GeeksforGeeks

4、Intelligent Agent in AI - GeeksforGeeks

5、https://medium.com/sema4-ai/whats-inside-an-enterprise-ai-agent-1394fad33c1e#id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6ImE0OTM5MWJmNTJiNThjMWQ1NjAyNTVjMmYyYTA0ZTU5ZTIyYTdiNjUiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIyMTYyOTYwMzU4MzQtazFrNnFlMDYwczJ0cDJhMmphbTRsamRjbXMwMHN0dGcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIyMTYyOTYwMzU4MzQtazFrNnFlMDYwczJ0cDJhMmphbTRsamRjbXMwMHN0dGcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTAyNjg1MzQ4MDEyODU1MjI4NTYiLCJlbWFpbCI6ImRpbXVob29AZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5iZiI6MTcyNDk5MzExNCwibmFtZSI6Im11IERpIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FDZzhvY0lnMno1UXdZSkdTT0h1b21TYkp1Tko2bV9uV2FoQ1VxaDQ0T3lpS1d6bmZqbUxxZWs9czk2LWMiLCJnaXZlbl9uYW1lIjoibXUiLCJmYW1pbHlfbmFtZSI6IkRpIiwiaWF0IjoxNzI0OTkzNDE0LCJleHAiOjE3MjQ5OTcwMTQsImp0aSI6IjFjNWZhOWJiMjVmMmJjZTQ3NzdmMjlmYzk0MDg1YTZmOTNmZjMxZTgifQ.Dkd3DZWxVjXv-102P-pmk9hIfQ-9YkZBFLSH-_qIfD_f4uABsudC9vR0cHylbaacEK0BcqdjHrYubhhwqkTQBGjQrhioNLEpzX3wQzwdDWboG4T2NVOCWoi48-CYSBxC02CIQZ701t6ADdt1HvJkCJeCWPl3JyhU0eM-Do2pOs_23WKg1XxSSHNEUanOAW4_xlTyetutyHD57Nx3CuyGBqg7gMgjrC8c3Ge1oJG1G6GhdD5QEPVdyB61AdNeOM0_-zMLZ6R7_L7GNrkgCF8O_RivJEh-gDXfJUe4pUq62hQQDNOoDVk2nUWKJGpiMNLZInIbuyG_5Nco4xnB-vbJUwicon-default.png?t=N7T8https://medium.com/sema4-ai/whats-inside-an-enterprise-ai-agent-1394fad33c1e#id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6ImE0OTM5MWJmNTJiNThjMWQ1NjAyNTVjMmYyYTA0ZTU5ZTIyYTdiNjUiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIyMTYyOTYwMzU4MzQtazFrNnFlMDYwczJ0cDJhMmphbTRsamRjbXMwMHN0dGcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIyMTYyOTYwMzU4MzQtazFrNnFlMDYwczJ0cDJhMmphbTRsamRjbXMwMHN0dGcuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTAyNjg1MzQ4MDEyODU1MjI4NTYiLCJlbWFpbCI6ImRpbXVob29AZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5iZiI6MTcyNDk5MzExNCwibmFtZSI6Im11IERpIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FDZzhvY0lnMno1UXdZSkdTT0h1b21TYkp1Tko2bV9uV2FoQ1VxaDQ0T3lpS1d6bmZqbUxxZWs9czk2LWMiLCJnaXZlbl9uYW1lIjoibXUiLCJmYW1pbHlfbmFtZSI6IkRpIiwiaWF0IjoxNzI0OTkzNDE0LCJleHAiOjE3MjQ5OTcwMTQsImp0aSI6IjFjNWZhOWJiMjVmMmJjZTQ3NzdmMjlmYzk0MDg1YTZmOTNmZjMxZTgifQ.Dkd3DZWxVjXv-102P-pmk9hIfQ-9YkZBFLSH-_qIfD_f4uABsudC9vR0cHylbaacEK0BcqdjHrYubhhwqkTQBGjQrhioNLEpzX3wQzwdDWboG4T2NVOCWoi48-CYSBxC02CIQZ701t6ADdt1HvJkCJeCWPl3JyhU0eM-Do2pOs_23WKg1XxSSHNEUanOAW4_xlTyetutyHD57Nx3CuyGBqg7gMgjrC8c3Ge1oJG1G6GhdD5QEPVdyB61AdNeOM0_-zMLZ6R7_L7GNrkgCF8O_RivJEh-gDXfJUe4pUq62hQQDNOoDVk2nUWKJGpiMNLZInIbuyG_5Nco4xnB-vbJUw

6、https://www.linkedin.com/posts/pavan-belagatti_llms-activity-7157026778157314048-CISP

7、https://www.cnblogs.com/huaweiyun/p/18289995

8、https://pub.towardsai.net/meet-babyagi-the-autonomous-ai-agent-to-streamline-your-tasks-f44cb9de5503

9、babyagi/babyagi.py at main · yoheinakajima/babyagi · GitHub

10、AI Agents: AutoGPT architecture & breakdown | Jou-ching (George) Sung

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于asp.net的webform图书管理系统附源码

今天给大家分享一个c#的图书管理系统&#xff0c;采用的SQLserver数据库&#xff0c;VS开发&#xff0c;详情如下 1.主要功能 主要功能包含用户注册登陆、借书管理、还书管理、管理员登陆、个人中心 、密码修改、图书分类、图书管理等等。2.开发工具及其环境 系统采用VS2013…

MySQL批量插入测试数据的2种方式

在开发过程中我们不管是用来测试性能还是在生产环境中页面展示好看一点, 又或者学习验证某一知识点经常需要一些测试数据, 这个时候如果手敲的话, 十行二十行还好, 多了就很死亡了, 接下来介绍两种常用的MySQL测试数据批量生成方式&#xff1a; 存储方式函数 Navicat的数据生成…

投屏软件哪个好用又免费?4款投屏软件,远程且兼容多平台!

投屏软件哪个好用又免费&#xff1f;不论是在工作中做演示、在家中娱乐观影&#xff0c;还是在学习中进行远程教学&#xff0c;投屏软件都能让你的设备实现多屏互动&#xff0c;让体验更为流畅和便捷。今天&#xff0c;我就为大家推荐几款热门的投屏软件。 1. 乐播投屏&#xf…

第二证券:白酒股,全线飘红

A股首要指数走势分化&#xff0c;到午间收盘&#xff0c;沪指跌0.45%&#xff0c;深成指涨1.03%&#xff0c;创业板指涨0.8%。近4000只个股上涨&#xff0c;两市半日成交3854亿元&#xff0c;较上日同期放量629亿元。 盘面上&#xff0c;光伏设备板块冲高&#xff0c;快可电子…

【区间dp、字符串处理】P4290 [HAOI2008] 玩具取名 题解

前言 毒瘤的字符串杂题 题意 给定 A , B , C , D ( A , B , C , D ≤ 16 ) A,B,C,D(A,B,C,D \leq 16) A,B,C,D(A,B,C,D≤16) 四个数&#xff0c;依次代表 W I N G 四个字母分别能用哪些含有 W I N G 四个字母且长度为 2 2 2 的字符串表示&#xff0c;如以下输入样例&#…

为什么选择GHA文章作为谷歌seo的首选?

选择GHA的文章作为谷歌SEO的首选主要是因为其内容质量和优化策略&#xff0c;GHA专注于高质量的原创内容&#xff0c;这些内容不仅是原创的&#xff0c;还包括了超过3000字的详细信息&#xff0c;通过深入的关键词调研和布局&#xff0c;确保每篇文章都能在发布后迅速被谷歌收录…

JavaScript学习文档(11):Window对象、本地存储、数组中一些方法、学生就业统计表案例

目录 一、Window对象 1、BOM(浏览器对象模型) 2、定时器-延时函数 3、 JS执行机制 &#xff08;1&#xff09;同步任务&#xff1a; &#xff08;2&#xff09;异步任务&#xff1a; 4、location对象 &#xff08;1&#xff09;5秒钟后跳转页面 5、navigator对象 6、…

【uniapp/uview1.x】u-collapse 高度随内容自适应

当 u-collapse-items 中的内容为动态的时候&#xff0c;会发生这种情况&#xff1a; 在 uview 官网中有一个方法可以解决&#xff1a; 具体方法&#xff1a; 在 u-collapse 标签中配置 ref"collapse"&#xff1a; <u-collapse ref"collapse" :item-…

python脚本开头怎么写

在python开发的过程中&#xff0c;脚本开头非常重要。 第一行&#xff1a;告诉操作系统python装在哪里&#xff08;是通过env中查询&#xff0c;然后再调到对应的解析器完成运行&#xff09;。 第二行&#xff1a;是声明文件的编码格式以utf-8。 其他则为这个文件信息&#…

LeetCode49题的反思

Java里的List&#xff08;集合&#xff09;、Array&#xff08;数组&#xff09;、Map&#xff08;字典&#xff09; List<String> L new ArrayList<>();(List是接口&#xff0c;ArrayList是接口的实现类) int[] Y new int[2];(Java命名类型&#xff0c;int[]是个…

如何使用 TortoiseGit(小乌龟)进行分支创建、切换与合并以及解决冲突

&#x1f600;前言 本文将详细介绍如何使用 TortoiseGit&#xff08;小乌龟&#xff09;进行分支创建、切换与合并以及解决冲突等操作。TortoiseGit 是一个广泛使用的 Windows 图形化 Git 客户端&#xff0c;其友好的用户界面和丰富的功能使得 Git 操作变得更加直观和便捷。 &a…

web尝试---信箱

功能 写信&#xff08;增加&#xff09;读信&#xff08;显示所有信件&#xff09; 目录结构 数据库设计 刚开始设计了主键为id&#xff0c;但是后来不想用id这个属性了&#xff0c;但是代码写完了很麻烦不想改了。 感觉我这个id属性设置的简直多余&#xff01;&#xff01…

传知代码-MSA+抑郁症模型总结(三)(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 热门研究领域&#xff1a;情感计算的横向发展 随着社交网络的不断发展&#xff0c;近年来出现了多模态数据的热潮。越来越多的用户采用媒体形式的组合&#xff08;例如文本加图像、文本加歌曲、文本加视频等&…

TypeScript(TS) 自定义绑定快捷键

有很多软件中都可以让用户自定义快捷键 如微信中的快捷键&#xff1a; 思路&#xff1a; 1. 将快捷键分为两部分&#xff1a; a. 主要的键 shift, ctrl, alt, command&#xff1b; b. 非主要的键 字母键、数字键等&#xff1b; 2. 键盘按下事件&#xff1a;比较按键和绑定…

Echarts关系图特效实现

全屏展示 鼠标经过高亮展示 点击其他节点&#xff0c;加载其他节点数据 这个主要利用了echarts的关系图配置。因为需要将相同类型的数据放一起&#xff0c;所以不能实用引力图&#xff0c;引力图虽然效果比较好&#xff0c;而且有动画&#xff0c;但是无法根据同一类型的东西在…

快递时效新视角:‌批量分析派件与签收策略

在快递行业日益竞争的今天&#xff0c;‌时效成为了衡量快递服务质量的重要指标之一。‌对于商家和消费者而言&#xff0c;‌了解快递从到达最后站点到派件以及签收的时效&#xff0c;‌对于优化物流流程、‌提升客户体验具有重要意义。‌本文将介绍如何利用快递批量查询高手软…

17-18 - make 中的路径搜索

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 常用的源码管理方式1.1 特殊的预定义变量 VPATH&#xff08;全大写&#xff09;1.2 make 对于 VPATH 值的处理方式1.3 vpath&#xff08;全小写&#xff09; 2. 常见问题2.1 问题 12.2 问题 2 1. 常用的源码管理方式 项目中的 …

【化学方程式配平 / 3】

题目 代码 #include <bits/stdc.h> using namespace std; const double eps 1e-8; unordered_map<string, int> e; int eidx, midx; //eidx 元素数&#xff0c; midx 物质数 double matrix[45][45]; int q; bool check_alpha(char c) {if(c > a && c …

这一届单机游戏玩家,都在用云电脑玩《黑神话悟空》

文 | 智能相对论 作者 | 陈泊丞 周五下班&#xff0c;上号玩游戏&#xff0c;突然发现&#xff0c;之前因为电脑配置跟不上&#xff0c;“A”了大半年的游戏亲友竟然在线&#xff1f;&#xff01; “哟&#xff0c;终于舍得配电脑了&#xff1f;&#xff01;”我发消息问道。…

RedisTemplate集成+封装RedisUtil

文章目录 1.项目搭建1.创建一个redis模块2.调整pom.xml&#xff0c;使其成为单独的模块1.sun-common-redis的pom.xml 取消parent2.sun-common的pom.xml 取消对redis模块的管理3.sun-frame的pom.xml 增加对redis模块的管理4.关于只在modules中配置子模块&#xff0c;但是子模块没…