<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CrewAI on On My Way</title>
    <link>https://tuanzi-wow.cn/frameworks/crewai/</link>
    <description>Recent content in CrewAI on On My Way</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <atom:link href="https://tuanzi-wow.cn/frameworks/crewai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Crew</title>
      <link>https://tuanzi-wow.cn/frameworks/crewai/crew/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://tuanzi-wow.cn/frameworks/crewai/crew/</guid>
      <description>Crew相关学习笔记与实践要点。</description>
      <content:encoded><![CDATA[<h1 id="crew">Crew</h1>
<h2 id="概念">概念:</h2>
<p>代表一组协作工作的agent,共同完成一系列的任务</p>
<h2 id="属性">属性</h2>
<p>必须:tasks,agents
剩下的均为可选,请自行前往官网查阅</p>
<h2 id="创建crew">创建crew</h2>
<p>两种方法:YAML配置(推荐)和直接再代码中定义</p>
<h3 id="yaml中配置">YAML中配置</h3>
<p>继承自CrewBase并使用装饰器定义agent,task和本身的类</p>
<p>@agent,@taks,@crew,@before_kickoff,@after_kickoff</p>
<h4 id="几种装饰器的概述">几种装饰器的概述</h4>
<ul>
<li><code>@CrewBase</code>: 将类标记为船员基类。</li>
<li><code>@agent</code>: 表示返回 <code>Agent</code> 对象的方法。</li>
<li><code>@task</code>: 表示返回 <code>Task</code> 对象的方法。</li>
<li><code>@crew</code>: 表示返回 <code>Crew</code> 对象的方法。</li>
<li><code>@before_kickoff</code>: (可选) 标记在船员启动前执行的方法。</li>
<li><code>@after_kickoff</code>: (可选) 标记在船员完成执行后执行的方法。</li>
</ul>
<h3 id="直接代码定义">直接代码定义</h3>
<h2 id="crewoutput">CrewOutput</h2>
<p>CrewAI框架中crew的输出封装再CrewOutput类中,提供了一种结构化的方法来访问crew的执行结果,包括原始字符串,JSON和Pydantic模型等各种格式
包含的内容:最终任务输出的结果,token使用情况以及单个任务的输出</p>
<h3 id="属性-1">属性</h3>
<table>
	<thead>
			<tr>
					<th style="text-align: left">属性</th>
					<th style="text-align: left">参数</th>
					<th style="text-align: left">类型</th>
					<th style="text-align: left">描述</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>原始</strong></td>
					<td style="text-align: left"><code>raw</code></td>
					<td style="text-align: left"><code>str</code></td>
					<td style="text-align: left">船员的原始输出。这是输出的默认格式。</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Pydantic</strong></td>
					<td style="text-align: left"><code>pydantic</code></td>
					<td style="text-align: left"><code>Optional[BaseModel]</code></td>
					<td style="text-align: left">表示船员结构化输出的 Pydantic 模型对象。</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>JSON 字典</strong></td>
					<td style="text-align: left"><code>json_dict</code></td>
					<td style="text-align: left"><code>Optional[Dict[str, Any]]</code></td>
					<td style="text-align: left">表示船员 JSON 输出的字典。</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>任务输出</strong></td>
					<td style="text-align: left"><code>tasks_output</code></td>
					<td style="text-align: left"><code>List[TaskOutput]</code></td>
					<td style="text-align: left"><code>TaskOutput</code> 对象的列表，每个对象代表船员中一个任务的输出。</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Token 使用情况</strong></td>
					<td style="text-align: left"><code>token_usage</code></td>
					<td style="text-align: left"><code>Dict[str, Any]</code></td>
					<td style="text-align: left">token 使用情况摘要，提供关于语言模型在执行期间性能的洞察。</td>
			</tr>
	</tbody>
</table>
<h3 id="方法或者属性">方法或者属性</h3>
<table>
	<thead>
			<tr>
					<th style="text-align: left">方法/属性</th>
					<th style="text-align: left">描述</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>json</strong></td>
					<td style="text-align: left">如果输出格式为 JSON，则返回船员输出的 JSON 字符串表示。</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>to_dict 转换为字典格式</strong></td>
					<td style="text-align: left">将 JSON 和 Pydantic 输出转换为字典。</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>str 字符串</strong></td>
					<td style="text-align: left">返回船员输出的字符串表示，优先级为 Pydantic，然后是 JSON，最后是原始。</td>
			</tr>
	</tbody>
</table>
<h3 id="访问输出">访问输出</h3>
<p>通过crew对象的output属性访问输出</p>
<h2 id="访问crew日志">访问Crew日志</h2>
<p>通过将 <code>output_log_file</code> 设置为 <code>True(布尔值)</code> 或 <code>file_name(字符串)</code>，您可以实时查看船员执行日志。支持将事件记录为 <code>file_name.txt</code> 和 <code>file_name.json</code> 两种格式。如果设置为 <code>True(布尔值)</code>，将保存为 <code>logs.txt</code>。</p>
<h2 id="记忆利用">记忆利用</h2>
<p>通过存储和回忆执行记忆,来强化执行能力</p>
<h2 id="缓存利用">缓存利用</h2>
<p>利用缓存存储执行结果,减少重复任务的执行来提供流程效率</p>
<h2 id="crew使用指标">Crew使用指标</h2>
<p>通过usage_metrics属性来查看执行所有任务的LLM使用指标</p>
<h2 id="执行流程">执行流程</h2>
<p>顺序流程
层级流程:一个管理器进行协调</p>
<h3 id="启动crew">启动crew</h3>
<p>使用kickoff()方法启动process</p>
<h3 id="几种不同的启动方式">几种不同的启动方式</h3>
<p>kickoff(),kickoff_for_each(),kickoff_async(),kickoff_for_each_asych()</p>
<ul>
<li><code>kickoff()</code>: 根据定义的流程启动执行过程。</li>
<li><code>kickoff_for_each()</code>: 对集合中提供的每个输入事件或项目顺序执行任务。</li>
<li><code>kickoff_async()</code>: 异步启动工作流程。</li>
<li><code>kickoff_for_each_async()</code>: 对提供的每个输入事件或项目并发执行任务，利用异步处理。</li>
</ul>
<h3 id="从特定的任务重放">从特定的任务重放</h3>
<p>CLI命令replay重放</p>
<p>CrewAI 中的重放功能允许您使用命令行界面 (CLI) 从特定任务重放。通过运行命令 <code>crewai replay -t &lt;task_id&gt;</code>，您可以指定重放过程的 <code>task_id</code>。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
