精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

AutoGen 從入門到高階系列二:詳解AutoGen框架常見的內置智能體 原創

發布于 2025-5-21 06:37
瀏覽
0收藏

?上一篇文章我分享了AutoGen的基礎使用??AutoGen從入門到高階系列一:如何從零開始構建你的第一個智能體???,這一篇文章來分享一下AutoGen里面的智能體。

內置了哪些智能體

  • ??UserProxyAgent??: 一個智能體,接收用戶輸入并將其作為響應返回
  • AssistantAgent:這是一個通用的智能體,它利用大型語言模型(LLM)進行文本生成與推理,還可通過工具(tools)擴展其能力。
  • ??CodeExecutorAgent??: 一個可以執行代碼的智能體。
  • ??OpenAIAssistantAgent??: 一個由OpenAI Assistant支持的智能體,能夠使用自定義工具。
  • ??MultimodalWebSurfer??: 一個多模態智能體,可以搜索網頁并訪問網頁以獲取信息。
  • ??FileSurfer??: 一個可以搜索和瀏覽本地文件以獲取信息的智能體。
  • ??VideoSurfer??: 一個可以觀看視頻以獲取信息的智能體。

通用方法

所有智能體都繼承自ChatAgent,然后各自有各自的處理消息的不同方式。

class ChatAgent(ABC, TaskRunner, ComponentBase[BaseModel]):
    """Protocol for a chat agent."""

    component_type = "agent"

    @property
    @abstractmethod
    def name(self) -> str:
        """The name of the agent. This is used by team to uniquely identify
        the agent. It should be unique within the team."""
        ...

    @property
    @abstractmethod
    def description(self) -> str:
        """The description of the agent. This is used by team to
        make decisions about which agents to use. The description should
        describe the agent's capabilities and how to interact with it."""
        ...

    @property
    @abstractmethod
    def produced_message_types(self) -> Sequence[type[BaseChatMessage]]:
        """The types of messages that the agent produces in the
        :attr:`Response.chat_message` field. They must be :class:`BaseChatMessage` types."""
        ...

    @abstractmethod
    asyncdef on_messages(self, messages: Sequence[BaseChatMessage], cancellation_token: CancellationToken) -> Response:
        """Handles incoming messages and returns a response."""
        ...

    @abstractmethod
    def on_messages_stream(
        self, messages: Sequence[BaseChatMessage], cancellation_token: CancellationToken
    ) -> AsyncGenerator[BaseAgentEvent | BaseChatMessage | Response, None]:
        """Handles incoming messages and returns a stream of inner messages and
        and the final item is the response."""
        ...

    @abstractmethod
    asyncdef on_reset(self, cancellation_token: CancellationToken) -> None:
        """Resets the agent to its initialization state."""
        ...

    @abstractmethod
    asyncdef on_pause(self, cancellation_token: CancellationToken) -> None:
        """Called when the agent is paused. The agent may be running in :meth:`on_messages` or
        :meth:`on_messages_stream` when this method is called."""
        ...

    @abstractmethod
    asyncdef on_resume(self, cancellation_token: CancellationToken) -> None:
        """Called when the agent is resumed. The agent may be running in :meth:`on_messages` or
        :meth:`on_messages_stream` when this method is called."""
        ...

    @abstractmethod
    asyncdef save_state(self) -> Mapping[str, Any]:
        """Save agent state for later restoration"""
        ...

    @abstractmethod
    asyncdef load_state(self, state: Mapping[str, Any]) -> None:
        """Restore agent from saved state"""
        ...

    @abstractmethod
    asyncdef close(self) -> None:
        """Release any resources held by the agent."""
        ...
  • ??name??: 智能體的唯一名稱。
  • ??description??: 智能體的描述文本。
  • ??on_messages()???: 向智能體發送一系列??ChatMessage???,并獲取一個??Response??。需要注意的是,智能體預計是有狀態的,此方法應使用新消息調用,而不是完整的歷史記錄。
  • ??on_messages_stream()???: 與??on_messages()??? 相同,但返回一個迭代器,其中包含??AgentEvent??? 或??ChatMessage???,最后一項是??Response??。
  • ??on_reset()??: 將智能體重置為其初始狀態。
  • ??run()??? 和??run_stream()???: 這些是便捷方法,分別調用??on_messages()??? 和??on_messages_stream()??

智能體的工作流程

下圖展示了智能體的工作方式:

AutoGen 從入門到高階系列二:詳解AutoGen框架常見的內置智能體-AI.x社區

工具調用行為:

  • 如果模型沒有返回工具調用,那么響應將立即作為??TextMessage???在??chat_message??中返回。
  • When the model returns tool calls, they will be executed right away:
    當reflect_on_tool_use為False(默認值)時,工具調用結果將作為???ToolCallSummaryMessage???返回到??chat_message???中。tool_call_summary_format可用于自定義工具調用摘要。當reflect_on_tool_use為True時,使用工具調用和結果進行另一個模型推理,并將文本響應作為??TextMessage???返回在??chat_message??中。
  • 如果模型返回多個工具調用,它們將并發執行。要禁用并行工具調用,你需要配置模型客戶端。例如,為??OpenAIChatCompletionClient??? 和??AzureOpenAIChatCompletionClient?? 設置 parallel_tool_calls=False。

AssistantAgent

Tools

AssistantAgent 的核心功能是接收消息,利用 LLM 進行處理并生成響應。通過設置 system_message,能夠定義智能體的角色與行為;設置 model_client 可指定使用的 LLM 模型;通過 tools 參數添加工具函數,擴展智能體功能;設置 reflect_on_tool_use=True,可讓智能體反思工具的使用結果,并提供自然語言響應

FunctionTool

??AssistantAgent??? 自動將 Python 函數轉換為 ??FunctionTool??,該工具可以被智能體使用,并自動從函數簽名和文檔字符串生成工具架構。

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.messages import TextMessage
from autogen_core import CancellationToken
from autogen_ext.models.openai import OpenAIChatCompletionClient

# Define a tool that searches the web for information.
asyncdef web_search(query: str) -> str:
    """Find information on the web"""
    return"AutoGen is a programming framework for building multi-agent applications."


# Create an agent that uses the OpenAI GPT-4o model.
model_client = OpenAIChatCompletionClient(model="gpt-4o-mini", api_key=api_key, base_url=base_url)

agent = AssistantAgent(
    name="assistant",
    model_client=model_client,
    tools=[web_search],
    system_message="Use tools to solve tasks.",
)

query = "Find information on AutoGen"
asyncdef assistant_run() -> None:
    response = await agent.on_messages(
        [TextMessage(cnotallow=query, source="user")],
        cancellation_token=CancellationToken(),
    )
    print(response.inner_messages)
    print(response.chat_message)

調用 ??on_messages()??? 方法 返回一個 ??Response???, 其中包含智能體的最終響應在 ??chat_message??? 屬性中, 以及一系列內部消息在 ??inner_messages?? 屬性中, 該屬性存儲了智能體生成最終響應的“思考過程”:

[ToolCallRequestEvent(source='assistant', models_usage=RequestUsage(prompt_tokens=61, completion_tokens=16), metadata={}, cnotallow=[FunctionCall(id='call_Vcv22g0vCDaMd7mtdSpbB1zf', arguments='{"query":"AutoGen"}', name='web_search')], type='ToolCallRequestEvent'), ToolCallExecutionEvent(source='assistant', models_usage=None, metadata={}, cnotallow=[FunctionExecutionResult(cnotallow='AutoGen is a programming framework for building multi-agent applications.', name='web_search', call_id='call_Vcv22g0vCDaMd7mtdSpbB1zf', is_error=False)], type='ToolCallExecutionEvent')]
source='assistant' models_usage=None metadata={} cnotallow='AutoGen is a programming framework for building multi-agent applications.' type='ToolCallSummaryMessage'

當我們詢問一個非web檢索的問題:who are you?  的時候,inner_messages 返回空,chat_message 返回:

source='assistant' models_usage=RequestUsage(prompt_tokens=59, completion_tokens=42) metadata={} cnotallow="I am an AI language model designed to assist with a wide range of questions and tasks. I'm here to provide information, answer queries, and help with problem-solving! How can I assist you today?" type='TextMessage'

需要注意的是,??on_messages()?? 將會更新智能體的內部狀態——它會將消息添加到智能體的歷史記錄中

默認情況下,當??AssistantAgent???執行一個工具時,它會將工具的輸出作為字符串返回到響應中的??ToolCallSummaryMessage???中。如果您的工具沒有返回一個自然語言中格式良好的字符串,您可以通過在??AssistantAgent???構造函數中設置??reflect_on_tool_use=True??參數,添加一個反思步驟,讓模型總結工具的輸出。

MCP

??AssistantAgent??? 也可以使用從模型上下文協議(MCP)服務器提供的工具,通過 ??mcp_server_tools()?? 來實現。

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import StdioServerParams, mcp_server_tools

# Get the fetch tool from mcp-server-fetch.
fetch_mcp_server = StdioServerParams(command="uvx", args=["mcp-server-fetch"])
tools = await mcp_server_tools(fetch_mcp_server)

# Create an agent that can use the fetch tool.
model_client = OpenAIChatCompletionClient(model="gpt-4o")
agent = AssistantAgent(name="fetcher", model_client=model_client, tools=tools, reflect_on_tool_use=True)  # type: ignore

# Let the agent fetch the content of a URL and summarize it.
result = await agent.run(task="Summarize the content of https://en.wikipedia.org/wiki/Seattle")
print(result.messages[-1].content)

多模態輸入

??AssistantAgent??? 可以通過提供一個 ??MultiModalMessage?? 來處理多模態輸入

from io import BytesIO

import PIL
import requests
from autogen_agentchat.messages import MultiModalMessage
from autogen_core import Image

# Create a multi-modal message with random image and text.
pil_image = PIL.Image.open(BytesIO(requests.get("https://picsum.photos/300/200").content))
img = Image(pil_image)
multi_modal_message = MultiModalMessage(cnotallow=["Can you describe the content of this image?", img], source="user")
img

經過測試,發現如果圖片尺寸太大,openai會報請求體太大的錯誤:

openai.APIStatusError: <html>
<head><title>413 Request Entity Too Large</title></head>
<body>
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx/1.18.0 (Ubuntu)</center>
</body>
</html>

流式

你可以通過設置??model_client_stream=True???來流式傳輸模型客戶端生成的標記。 這將使智能體生成??ModelClientStreamingChunkEvent???消息 在??on_messages_stream()???和??run_stream()??中。

model_client = OpenAIChatCompletionClient(model="gpt-4o")

streaming_assistant = AssistantAgent(
    name="assistant",
    model_client=model_client,
    system_message="You are a helpful assistant.",
    model_client_stream=True,  # Enable streaming tokens.
)

# Use an async function and asyncio.run() in a script.
async for message in streaming_assistant.on_messages_stream(  # type: ignore
    [TextMessage(cnotallow="Name two cities in South America", source="user")],
    cancellation_token=CancellationToken(),
):
    print(message)

結構化輸出

結構化輸出允許模型返回帶有應用程序提供的預定義模式的JSON格式文本。與JSON模式不同,模式可以作為Pydantic BaseModel類提供,該類還可以用于驗證輸出。

結構化輸出僅適用于支持它的模型。它還需要模型客戶端也支持結構化輸出

from typing import Literal

from pydantic import BaseModel


# The response format for the agent as a Pydantic base model.
class AgentResponse(BaseModel):
    thoughts: str
    response: Literal["happy", "sad", "neutral"]


# Create an agent that uses the OpenAI GPT-4o model with the custom response format.
model_client = OpenAIChatCompletionClient(
    model="gpt-4o",
    response_format=AgentResponse,  # type: ignore
)
agent = AssistantAgent(
    "assistant",
    model_client=model_client,
    system_message="Categorize the input as happy, sad, or neutral following the JSON format.",
)

await Console(agent.run_stream(task="I am happy."))

輸出:

---------- TextMessage (user) ----------
I am happy.
---------- TextMessage (assistant) ----------
{"thoughts":"The user explicitly states that they are happy, giving a clear indication of their emotional state.","response":"happy"}

模型上下文

??AssistantAgent??? 有一個 ??model_context??? 參數,可以用于傳遞一個 ??ChatCompletionContext??? 對象。這使得智能體能夠使用不同的模型上下文,例如 ??BufferedChatCompletionContext?? 來 限制發送到模型的上下文。

默認情況下,??AssistantAgent???使用??UnboundedChatCompletionContext???,它將完整的對話歷史發送給模型。要將上下文限制為最后??n???條消息,您可以使用??BufferedChatCompletionContext??。

from autogen_core.model_context import BufferedChatCompletionContext

# Create an agent that uses only the last 5 messages in the context to generate responses.
agent = AssistantAgent(
    name="assistant",
    model_client=model_client,
    tools=[web_search],
    system_message="Use tools to solve tasks.",
    model_cnotallow=BufferedChatCompletionContext(buffer_size=5),  # Only use the last 5 messages in the context.
)

UserProxyAgent

該智能體主要用于接收用戶輸入,并將其發送給其他智能體,可看作是用戶與多智能體系統交互的橋梁。其核心功能是接收用戶輸入,然后將其轉換為消息發送給其他智能體。通過 input_func 參數,可自定義輸入函數,例如使用 input () 從控制臺接收用戶輸入。

async def assistant_run_stream() -> None:
    assistant = AssistantAgent("assistant", model_client=model_client)
    user_proxy = UserProxyAgent("user_proxy", input_func=input)
    termination = TextMentionTermination("APPROVE")
    team = RoundRobinGroupChat([assistant, user_proxy], termination_cnotallow=termination)
    stream = team.run_stream(task="寫一首關于明月的七言絕句")
    await Console(stream)

返回結果如下:

---------- TextMessage (user) ----------
寫一首關于明月的七言絕句
---------- TextMessage (assistant) ----------
明月高懸夜色空,清輝灑落萬家同。  
庭前花影隨風舞,獨坐窗前思古風。  

TERMINATE
Enter your response: APPROVE
---------- TextMessage (user_proxy) ----------
APPROVE

MultimodalWebSurfer

MultimodalWebSurfer是一個多模態智能體,它扮演著網頁瀏覽者的角色,可以搜索網頁并訪問網頁。

安裝:

pip install "autogen-ext[web-Surfer]"
playwright install

它啟動一個chromium瀏覽器,并允許playwright與網頁瀏覽器進行交互,可以執行多種操作。瀏覽器在第一次調用智能體時啟動,并在后續調用中重復使用。

必須與支持函數/工具調用的多模態模型客戶端一起使用,目前理想的選擇是GPT-4o。

import asyncio
from autogen_agentchat.ui import Console
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.agents.web_Surfer import MultimodalWebSurfer


asyncdef main() -> None:
    # Define an agent
    web_Surfer_agent = MultimodalWebSurfer(
        name="MultimodalWebSurfer",
        model_client=OpenAIChatCompletionClient(model="gpt-4o-2024-08-06"),
    )

    # Define a team
    agent_team = RoundRobinGroupChat([web_Surfer_agent], max_turns=3)

    # Run the team and stream messages to the console
    stream = agent_team.run_stream(task="Navigate to the AutoGen readme on GitHub.")
    await Console(stream)
    # Close the browser controlled by the agent
    await web_Surfer_agent.close()


asyncio.run(main())

返回結果如下:

---------- TextMessage (user) ----------
Navigate to the AutoGen readme on GitHub.
---------- MultiModalMessage (MultimodalWebSurfer) ----------
I typed 'AutoGen readme site:github.com' into the browser search bar.

The web browser is open to the page [AutoGen readme site:github.com - 搜索](https://cn.bing.com/search?q=AutoGen+readme+site%3Agithub.com&FORM=QBLH&rdr=1&rdrig=19A3F496D9D246FD8DEF5EEA2303513E).
The viewport shows 36% of the webpage, and is positioned at the top of the page
The following text is visible in the viewport:

跳至內容
國內版
國際版
6
手機版網頁
圖片
視頻
學術
詞典
地圖
更多
工具
約 495 個結果Github
https://github.com ? ... ? autogen ? blob ? …
翻譯此結果
autogen/README.md at main · …2024年8月26日 · AutoGen is a framework for creating multi-agent AI applications that can act autonomously or work alongside humans. AutoGen requires Python 3.10 or later. The current stable version is v0.4. If you are upgrading from …
Github
https://github.com ? NanGePlus
GitHub - NanGePlus/AutoGenV04Test: AutoGen …2025年1月13日 · 主要內容:AutoGen與DeepSeek R1模型集成(Ollama方式本地部署deepseek-r1:14b大模型)、AutoGen與MCP服務器集成、AutoGen與HTTP API工具集成 https://www.bilibili.com/video/BV1weKFeGEMX/
Github
https://github.com ? ... ? autogen ? blob ? main ? README.md
autogen/README.md at main · liteli1987gmail/autogen · …AutoGen是一個由Microsoft開源的框架,專為構建和優化大型語言模型(LLM)工作流程而設計。 它提供了多智能體會話框架、應用程序構建工具以及推理性能優化的支持。
你可能喜歡的搜索
speechgenAddgeneAutoglymrunway genGithub
https://github.com
翻譯此結果
GitHub - ag2ai/ag2: AG2 (formerly AutoGen): The Open …

The following metadata was extracted from the webpage:

{
    "meta_tags": {
        "referrer": "origin-when-cross-origin",
        "SystemEntropyOriginTrialToken": "A5is4nwJJVnhaJpUr1URgj4vvAXSiHoK0VBbM9fawMskbDUj9WUREpa3JzGAo6xd1Cp2voQEG1h6NQ71AsMznU8AAABxeyJvcmlnaW4iOiJodHRwczovL3d3dy5iaW5nLmNvbTo0NDMiLCJmZWF0dXJlIjoiTXNVc2VyQWdlbnRMYXVuY2hOYXZUeXBlIiwiZXhwaXJ5IjoxNzUzNzQ3MjAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=",
        "ConfidenceOriginTrialToken": "Aqw360MHzRcmtEVv55zzdIWcTk2BBYHcdBAOysNJZP4qkN8M+5vUq36ITHFVst8LiX36KBZJXB8xvyBgdK2z5Q0AAAB6eyJvcmlnaW4iOiJodHRwczovL2JpbmcuY29tOjQ0MyIsImZlYXR1cmUiOiJQZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmdDb25maWRlbmNlIiwiZXhwaXJ5IjoxNzYwNDAwMDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=",
        "og:description": "\u901a\u8fc7\u5fc5\u5e94\u7684\u667a\u80fd\u641c\u7d22\uff0c\u53ef\u4ee5\u66f4\u8f7b\u677e\u5730\u5feb\u901f\u67e5\u627e\u6240\u9700\u5185\u5bb9\u5e76\u83b7\u5f97\u5956\u52b1\u3002",
        "og:site_name": "\u5fc5\u5e94",
        "og:title": "AutoGen readme site:github.com - \u5fc5\u5e94",
        "og:url": "https://cn.bing.com/search?q=AutoGen+readme+site%3Agithub.com&FORM=QBLH&rdr=1&rdrig=19A3F496D9D246FD8DEF5EEA2303513E",
        "fb:app_id": "3732605936979161",
        "og:image": "http://www.bing.com/sa/simg/facebook_sharing_5.png",
        "og:type": "website",
        "og:image:width": "600",
        "og:image:height": "315"
    }
}

Here is a screenshot of the page.
<image>
---------- MultiModalMessage (MultimodalWebSurfer) ----------
I clicked 'autogen/README.md at main · …'.

The web browser is open to the page [AutoGen readme site:github.com - 搜索](https://cn.bing.com/search?q=AutoGen+readme+site%3Agithub.com&FORM=QBLH&rdr=1&rdrig=19A3F496D9D246FD8DEF5EEA2303513E).
The viewport shows 36% of the webpage, and is positioned at the top of the page
The following text is visible in the viewport:

跳至內容
國內版
國際版
6
手機版網頁
圖片
視頻
學術
詞典
地圖
更多
工具
約 495 個結果Github
https://github.com ? ... ? autogen ? blob ? …
翻譯此結果
autogen/README.md at main · …2024年8月26日 · AutoGen is a framework for creating multi-agent AI applications that can act autonomously or work alongside humans. AutoGen requires Python 3.10 or later. The current stable version is v0.4. If you are upgrading from …
Github
https://github.com ? NanGePlus
GitHub - NanGePlus/AutoGenV04Test: AutoGen …2025年1月13日 · 主要內容:AutoGen與DeepSeek R1模型集成(Ollama方式本地部署deepseek-r1:14b大模型)、AutoGen與MCP服務器集成、AutoGen與HTTP API工具集成 https://www.bilibili.com/video/BV1weKFeGEMX/
Github
https://github.com ? ... ? autogen ? blob ? main ? README.md
autogen/README.md at main · liteli1987gmail/autogen · …AutoGen是一個由Microsoft開源的框架,專為構建和優化大型語言模型(LLM)工作流程而設計。 它提供了多智能體會話框架、應用程序構建工具以及推理性能優化的支持。
你可能喜歡的搜索
speechgenAddgeneAutoglymrunway genGithub
https://github.com
翻譯此結果
GitHub - ag2ai/ag2: AG2 (formerly AutoGen): The Open …
Here is a screenshot of the page.
<image>
---------- MultiModalMessage (MultimodalWebSurfer) ----------
I clicked 'autogen/README.md at main · …'.

The web browser is open to the page [AutoGen readme site:github.com - 搜索](https://cn.bing.com/search?q=AutoGen+readme+site%3Agithub.com&FORM=QBLH&rdr=1&rdrig=19A3F496D9D246FD8DEF5EEA2303513E).
The viewport shows 36% of the webpage, and is positioned at the top of the page
The following text is visible in the viewport:

跳至內容
國內版
國際版
6
手機版網頁
圖片
視頻
學術
詞典
地圖
更多
工具
約 495 個結果Github
https://github.com ? ... ? autogen ? blob ? …
翻譯此結果
autogen/README.md at main · …2024年8月26日 · AutoGen is a framework for creating multi-agent AI applications that can act autonomously or work alongside humans. AutoGen requires Python 3.10 or later. The current stable version is v0.4. If you are upgrading from …
Github
https://github.com ? NanGePlus
GitHub - NanGePlus/AutoGenV04Test: AutoGen …2025年1月13日 · 主要內容:AutoGen與DeepSeek R1模型集成(Ollama方式本地部署deepseek-r1:14b大模型)、AutoGen與MCP服務器集成、AutoGen與HTTP API工具集成 https://www.bilibili.com/video/BV1weKFeGEMX/
Github
https://github.com ? ... ? autogen ? blob ? main ? README.md
autogen/README.md at main · liteli1987gmail/autogen · …AutoGen是一個由Microsoft開源的框架,專為構建和優化大型語言模型(LLM)工作流程而設計。 它提供了多智能體會話框架、應用程序構建工具以及推理性能優化的支持。
你可能喜歡的搜索
speechgenAddgeneAutoglymrunway genGithub
https://github.com
翻譯此結果
GitHub - ag2ai/ag2: AG2 (formerly AutoGen): The Open …
Here is a screenshot of the page.
<image>

CodeExecutorAgent

一個提取并執行接收消息中找到的代碼片段并返回輸出的智能體。它通常在團隊中與另一個生成要執行的代碼片段的智能體一起使用。

代碼執行器僅處理在markdown代碼塊中使用三個反引號正確格式化的代碼。 例如:

```python
print("Hello World")
```

# or

```sh
echo "Hello World"
```

建議CodeExecutorAgent智能體使用Docker容器來執行代碼。這確保了模型生成的代碼在隔離的環境中執行

新版本已經考慮將??PythonCodeExecutionTool??作為此智能體的替代方案。該工具允許在單個智能體內執行Python代碼,而不是將其發送到單獨的智能體執行。但是,智能體的模型必須生成正確轉義的代碼字符串作為工具的參數。

async def assistant_run_stream() -> None:
    tool = PythonCodeExecutionTool(LocalCommandLineCodeExecutor(work_dir="coding"))
    agent = AssistantAgent(
        "assistant", model_client, tools=[tool], reflect_on_tool_use=True
    )
    await Console(
        agent.run_stream(
            task="寫一段二分查詢的經典代碼,并將其保存到一個文件中"
        )
    )

執行完代碼之后,我們可以看到在本地的coding目錄下多了一個名為binary_search.py的文件,文件內容如下:

def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

總結

在這篇文章中,我展示AutoGen的常用內置智能體的使用方式,這會幫助我們初步理解其整體構成。接下來,我還會通過另一篇文章來詳細講解各個智能體的源碼執行流程。感興趣的朋友可以點贊收藏關注,獲取實時更新。


本文轉載自??AI 博物院?? 作者:longyunfeigu


?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-5-21 06:37:07修改
收藏
回復
舉報
回復
相關推薦
老司机免费视频一区二区三区| 国产一区二区主播在线| 国产成人99久久亚洲综合精品| 国产精品国模大尺度视频| 国产精品日韩电影| 老女人性淫交视频| 综合干狼人综合首页| 欧美日韩电影在线| 国产一区二区网| 伊人网站在线观看| 国内精品美女在线观看| 亚洲欧美福利视频| 自拍一级黄色片| 国产女人在线视频| 国产精品亚洲а∨天堂免在线| 992tv成人免费影院| 久久精品国产亚洲AV成人婷婷| 亚洲天堂av资源在线观看| 色综合咪咪久久| 四虎精品欧美一区二区免费| 黄上黄在线观看| 高清不卡一区二区| 国产精品一区二区久久| 久久久精品免费看| 午夜影院欧美| 一区二区国产精品视频| 中国xxxx性xxxx产国| 日韩黄色三级| 91国在线观看| 男人天堂1024| 麻豆蜜桃在线| 成人aa视频在线观看| 国产精品成人v| 日韩乱码一区二区| 欧美精品国产一区二区| 在线日韩av观看| 变态另类丨国产精品| 日韩中文字幕一区二区高清99| 欧美综合一区二区| 丰满人妻中伦妇伦精品app| 女人天堂av在线播放| 亚洲私人黄色宅男| 亚洲一区中文字幕| 波多野结衣激情视频| 亚洲美女网站| 国模精品一区二区三区色天香| 国产黄色录像片| 成人3d精品动漫精品一二三| 国产丝袜一区二区| 亚洲一区二区三区综合| 欧美freesex黑人又粗又大| 亚洲女性喷水在线观看一区| 亚洲欧美电影在线观看| 中文字幕在线视频第一页| 午夜影院日韩| 正在播放欧美视频| 成人精品999| 亚洲另类av| 亚洲欧美日韩中文视频| 日本黄色网址大全| 美女精品一区最新中文字幕一区二区三区 | 精品福利一区二区| 亚洲国产精品久久久久婷蜜芽| caoprom在线| 姬川优奈aav一区二区| 欧美精品自拍视频| 性欧美又大又长又硬| 色综合天天性综合| 成年人在线观看视频免费| 欧美色999| 欧美视频精品在线| 99九九精品视频| 精品国产亚洲一区二区在线观看 | 国产又大又黄又粗又爽| 成人国产精品入口免费视频| 精品视频1区2区3区| 色一情一区二区| av在线播放国产| 亚洲精品高清视频在线观看| 久久久www免费人成黑人精品| 久久国产香蕉视频| 麻豆一区二区三| 91在线看网站| 外国精品视频在线观看| 国产亚洲精品bt天堂精选| 97久久天天综合色天天综合色hd | 青青青爽久久午夜综合久久午夜| 久久激情五月丁香伊人| 卡通动漫亚洲综合| 日韩视频一区二区三区在线播放免费观看| 68精品久久久久久欧美| 中文字幕在线日本| 国产一级精品在线| 久99久视频| 一级毛片视频在线| 亚洲成人精品一区二区| 黄色a级片免费| 国产精品国产三级在线观看| 亚洲国产精品嫩草影院久久| 欧美另类69xxxx| 亚洲经典自拍| 国产一区二区丝袜高跟鞋图片| 亚洲春色一区二区三区| 精品在线播放午夜| 精品伦精品一区二区三区视频| 国家队第一季免费高清在线观看| 亚洲视频免费观看| 日本免费不卡一区二区| 国产精品日韩精品在线播放| 亚洲国产日韩欧美在线99| 香蕉久久久久久久| av不卡免费看| 3d动漫精品啪啪一区二区三区免费| 神马久久久久久久久久| 亚洲欧洲在线观看av| 亚洲欧洲国产日韩精品| 91色在线看| 欧美乱熟臀69xxxxxx| 欧美国产日韩在线播放| 日韩视频在线直播| 中文字幕精品视频| 黄网在线观看视频| 国产福利一区二区三区视频在线| 91精品在线看| 理论视频在线| 天天影视网天天综合色在线播放| 亚洲天堂av一区二区| 亚洲香蕉视频| 91国内在线视频| 国产白浆在线观看| 中文字幕一区二区三区不卡在线| www.亚洲天堂网| 国产精品欧美大片| 欧美大片大片在线播放| 国产免费视频一区二区三区| 中文在线一区二区| 欧美一级黄色影院| 欧美精品第一区| 青青在线视频一区二区三区| 中文字幕一区二区人妻电影| 成人高清av在线| 男人的天堂avav| 亚洲成人偷拍| 精品中文字幕在线2019| 国产又粗又猛又色又| 中文字幕国产一区| 亚洲欧美另类动漫| 精品一区二区三区的国产在线观看| 欧美在线视频观看免费网站| 天天躁日日躁狠狠躁喷水| 亚洲成精国产精品女| 日韩少妇一区二区| 国产一区二区三区成人欧美日韩在线观看 | 一区二区三区午夜视频| 成人羞羞国产免费| 91小视频xxxx网站在线| 日韩一二三区不卡| 久久精品免费av| 奶水喷射视频一区| 久久久久久国产精品mv| 日韩激情电影| 亚洲欧洲一区二区三区久久| 亚洲国产av一区二区三区| 久久久www成人免费毛片麻豆 | 欧美日产一区二区三区在线观看| 周于希免费高清在线观看| 亚洲日韩中文字幕在线播放| 91麻豆精品在线| 国产精品国产精品国产专区不蜜 | 99热国产在线观看| 91免费国产在线| 成年人在线观看视频免费| 久久久影院免费| 91传媒视频在线观看| 免费av不卡在线观看| 日韩黄色在线免费观看| 精人妻无码一区二区三区| 国产精品乱码妇女bbbb| 精品国产一二区| 亚洲在线视频| 亚洲一区二区三区四区中文| 国产精品一站二站| 午夜精品久久久99热福利| 久色视频在线| 欧美一卡二卡在线| 精品欧美一区二区三区免费观看| 国产日产欧美一区二区视频| 一级黄色片在线免费观看| 在线国产日韩| 亚洲日本无吗高清不卡| 2020国产精品极品色在线观看| 4438全国成人免费| 毛片av在线| 日韩精品中文字幕久久臀| 亚洲天堂免费av| 亚洲va在线va天堂| 国产又黄又粗又猛又爽的| 成人一级视频在线观看| 亚洲乱码一区二区三区三上悠亚 | 丁香五月网久久综合| 在线播放麻豆| 亚洲成人网av| 在线播放精品视频| 偷拍一区二区三区| 一级性生活免费视频| 99re视频这里只有精品| 国产传媒免费观看| 久久婷婷麻豆| www.亚洲视频.com| 久久美女视频| 久久久久一区二区三区| 奇米一区二区| 国产精品丝袜视频| 中文av在线全新| 久久久久九九九九| 黄色在线观看网站| 一区二区三区回区在观看免费视频| 肥臀熟女一区二区三区| 一区二区久久久久久| 美国黄色特级片| 97超碰欧美中文字幕| 精产国品一二三区| 美国毛片一区二区三区| av动漫在线观看| 亚洲激情专区| 日韩成人三级视频| 忘忧草精品久久久久久久高清| 欧美成人dvd在线视频| 岛国成人av| 91精品免费| 日本一区精品视频| 成人免费观看a| av成人免费看| 日韩美女中文字幕| 三妻四妾完整版在线观看电视剧| 久久久噜噜噜久久久| 18videosex性欧美麻豆| 久久亚洲综合国产精品99麻豆精品福利| 美女毛片在线看| 亚洲美女免费精品视频在线观看| 女人18毛片一区二区三区| 日韩视频免费观看高清完整版在线观看 | 精品视频二区| 亚洲日韩第一页| 蜜桃视频在线免费| 亚洲欧美在线免费| 黄色片免费在线| 国产亚洲日本欧美韩国| 久久电影中文字幕| 亚洲色图第三页| 国产中文在线| 中文字幕精品—区二区| 永久免费av在线| 久久视频在线视频| 污的网站在线观看| 欧美激情久久久久| a'aaa级片在线观看| 韩国三级电影久久久久久| 九九精品调教| 97成人在线视频| 向日葵视频成人app网址| 国产成人综合精品| 另类一区二区| 亚洲xxx自由成熟| 久久男人av| 日本一区二区在线视频观看| 欧美色爱综合| eeuss中文| 狠狠爱成人网| 成熟老妇女视频| 蜜臀久久久99精品久久久久久| 亚洲综合欧美在线| 国产福利一区二区三区视频在线 | 国产97在线 | 亚洲| 日韩经典一区二区| 99久久免费观看| 亚洲人成免费| 国产av人人夜夜澡人人爽| 久久综合综合久久综合| av电影中文字幕| 久久青草欧美一区二区三区| 亚洲激情图片网| 亚洲一区二区偷拍精品| 国产婷婷色一区二区在线观看| 欧美在线观看一区| jizz中国少妇| 精品视频久久久| www国产在线观看| 欧美做受高潮电影o| 麻豆久久久久| 国内精品久久国产| 欧美激情成人| 国产成人无码精品久久久性色| 青青草成人在线观看| 亚洲精品成人无码毛片| 国产日韩欧美在线一区| 麻豆成人在线视频| 亚洲视频图片小说| 伊人手机在线视频| 91精品久久久久久久91蜜桃| 中国a一片一级一片| 日韩精品一区二区三区视频在线观看| 天天av综合网| 欧美精品在线免费观看| 日韩电影免费观| 国产高清一区视频| 久久亚洲国产| 国产成人亚洲精品无码h在线| 国产精品一区免费在线观看| 亚洲一区二区三区蜜桃| 亚洲综合在线视频| 一级特黄aaa大片| 亚洲欧美国产精品久久久久久久| 影院在线观看全集免费观看| 国产精品久久久亚洲| 欧美做受69| 欧美极品少妇无套实战| 男女男精品视频网| 97伦伦午夜电影理伦片| 亚洲高清中文字幕| 国产肥老妇视频| 日韩网站免费观看高清| 欧美黄色网页| 久久99国产精品| 亚洲第一精品影视| 日本成人在线免费观看| 国产精品卡一卡二| 五月天中文字幕| 亚洲午夜性刺激影院| 午夜激情电影在线播放| 国产日韩在线一区二区三区| 欧美一区二区三区久久精品茉莉花 | 日韩一级av毛片| 亚洲国产高清不卡| 黄色免费av网站| 日韩成人激情在线| 国产无遮挡裸体视频在线观看| 2020国产精品久久精品不卡| 亚洲国产精品综合久久久| 日本超碰在线观看| 国产精品免费看片| 一区二区视频免费观看| 在线一区二区日韩| ww久久综合久中文字幕| 日产精品高清视频免费| 日本不卡一二三区黄网| 成人性生交大片免费看无遮挡aⅴ| 欧美性xxxxx| 日本a一级在线免费播放| 清纯唯美日韩制服另类| 精品国产aⅴ| 黄色手机在线视频| 中文字幕一区在线| av中文字幕免费在线观看| 美女精品久久久| 91成人噜噜噜在线播放| av在线播放天堂| 91丨porny丨蝌蚪视频| 国产精品免费精品一区| 亚洲天堂日韩电影| 91在线成人| 四虎精品欧美一区二区免费| 国产成人小视频| 中文字幕在线字幕中文| 国产视频精品免费播放| 在线观看精品| 午夜啪啪免费视频| 丁香六月久久综合狠狠色| 久久久精品视频免费| 亚洲美女免费精品视频在线观看| 成人日韩在线观看| 一区二区精品视频| 粉嫩av一区二区三区粉嫩| 天堂网一区二区三区| 一区二区av在线| 欧美经典一区| 国产淫片av片久久久久久| 欧美激情一区二区三区不卡| 999av视频| 清纯唯美亚洲激情| 偷拍欧美精品| 免费在线观看成年人视频| 欧美在线观看视频一区二区| mm1313亚洲国产精品美女| 精品国产乱码久久久久久蜜柚| 久久精品天堂| 精品欧美一区二区久久久久| 亚洲激情在线观看视频免费| 青青热久免费精品视频在线18| 看一级黄色录像| 91丨porny丨中文| av中文字幕播放| 国产激情999| 亚洲一级黄色| 久久久国产一级片| 亚洲第一中文字幕在线观看| 精品成人免费一区二区在线播放| 天堂а√在线中文在线| 久久国产三级精品| 日韩欧美激情视频|