craft ai api python客户端

craft-ai的Python项目详细描述


创建人工智能api python客户端

pypi构建状态licensepython

craft ai的可解释ai api使产品和运营团队能够快速部署和运行可解释的ai。Craft AI解码您的数据流以提供自学服务。

开始吧!

0-注册

如果您正在阅读本文档,您可能已经注册了Craft AI,如果没有,请前往https://beta.craft.ai/signup

1-创建项目

一旦您的帐户设置完毕,让我们创建您的第一个项目!进入控制中心https://beta.craft.ai/inspector中的"项目"选项卡,然后按"创建项目"。

完成后,可以单击新创建的项目以检索其标记。令牌有两种类型:。您需要write标记来创建、更新和删除代理。

2-设置

安装

pip/pypi

我们先从pip安装软件包。

pip install --upgrade craft-ai

根据您的设置,您可能需要使用pip3pipenv而不是pip

然后将其导入到代码中

importcraftai
< Buff行情>

此客户机还提供帮助人员,帮助他们将其与熊猫配合使用

初始化

client=craftai.Client({"token":"{token}"})

3-创建代理

craft ai基于代理的概念。在大多数情况下,每个用户或每个设备都会创建一个代理。

代理是一个独立的模块,它存储用户或设备上下文的上下文的历史,并根据上下文的演变以决策树的形式学习要采取的决策

在本例中,我们将创建一个代理,该代理根据一天中的时间和房间中的人数学习灯泡的决策模型。此数据集被视为连续的上下文更新。如果您的数据更像事件,请参阅高级配置部分了解如何配置代理。在这里,代理的上下文有4个pr操作:

  • peoplecount这是一个连续的属性,
  • time of day这是一个time\u of the\u day属性,
  • timezone,一个类型为timezone的属性,需要为timeofday生成正确的值(cf.有关详细信息,请参见上下文属性类型部分)。
  • 最后lightbulbstate这是一个enum属性,也是输出。
< Buff行情>

:信息源:timeofday是自动生成的,您可以在下面找到更多信息。

agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")

很容易测试!打开https://beta.craft.ai/inspector,选择您的项目并列出您的代理。

现在,如果您第二次运行它,您将得到一个错误:代理'my_first_agent'已经存在。让我们看看如何在重新创建之前删除它。

agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")

有关详细信息,请查看"创建代理"参考文档

4-添加上下文操作

我们现在已经创建了第一个代理,但它还不能做太多。要学习决策模型,需要在Craft AI中提供数据,这些称为上下文操作。

请注意,只发送值更改,因此如果操作不包含值,则使用以前的已知值。

在下面我们添加8个操作:

  1. 第一个设置代理的初始状态,2016年7月25日5:30,在巴黎,无人在场,灯熄灭;
  2. 7:02,有人进入房间,灯打开;
  3. 7:15,其他人进入房间;
  4. 7:31,灯熄灭;
  5. 8:12,所有人离开房间;
  6. 19:23,2人进入房间;
  7. 22:35,灯亮起;
  8. 23:06,所有人离开房间,灯熄灭。
  9. < > >
    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")context_list=[{"timestamp":1469410200,"context":{"timezone":"+02:00","peopleCount":0,"lightbulbState":"OFF"}},{"timestamp":1469415720,"context":{"peopleCount":1,"lightbulbState":"ON"}},{"timestamp":1469416500,"context":{"peopleCount":2}},{"timestamp":1469417460,"context":{"lightbulbState":"OFF"}},{"timestamp":1469419920,"context":{"peopleCount":0}},{"timestamp":1469460180,"context":{"peopleCount":2}},{"timestamp":1469471700,"context":{"lightbulbState":"ON"}},{"timestamp":1469473560,"context":{"peopleCount":0,"lightbulbState":"OFF"}}]client.add_operations(agent_id,context_list)print("Successfully added initial operations to agent",agent_id,"!")

    在实际应用程序中,创建代理时,您可能会执行相同的操作,然后,在代理的整个生命周期中,定期使用更新的数据。

    有关更多信息,请查看'add context operations'参考文档

    5-计算决策树

    代理已经获取了一个上下文历史记录,我们现在可以从中计算一个决策树!决策树对输出进行建模,使我们能够估计给定上下文中的输出。

    决策树是在给定的时间戳计算的,这意味着它将考虑从创建此代理到现在的上下文历史。让我们首先尝试在2016年7月26日午夜计算决策树。

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")context_list=...client.add_operations(agent_id,context_list)print("Successfully added initial operations to agent",agent_id,"!")dt_timestamp=1469476800decision_tree=client.get_decision_tree(agent_id,dt_timestamp)print("The full decision tree at timestamp",dt_timestamp,"is the following:")print(decision_tree)""" Outputted tree is the following  {    "_version":"2.0.0",    "trees":{      "lightbulbState":{        "output_values" : ["OFF", "ON"],        "children":[          {            "children":[              {                "prediction":{                  "confidence":0.6774609088897705,                  "distribution":[0.8, 0.2],                  "value":"OFF",                  "nb_samples": 5                },                "decision_rule":{                  "operand":0.5,                  "operator":"<",                  "property":"peopleCount"                }              },              {                "prediction":{                  "confidence":0.8630361557006836,                  "distribution":[0.1, 0.9],                  "value":"ON",                  "nb_samples": 10                },                "decision_rule":{                  "operand":0.5,                  "operator":">=",                  "property":"peopleCount"                }              }            ],            "decision_rule":{              "operand":[                5,                5.6666665              ],              "operator":"[in[",              "property":"timeOfDay"            }          },          {            "children":[              {                "prediction":{                  "confidence":0.9947378635406494,                  "distribution":[1.0, 0.0],                  "value":"ON",                  "nb_samples": 10                },                "decision_rule":{                  "operand":[                    5.6666665,                    20.666666                  ],                  "operator":"[in[",                  "property":"timeOfDay"                }              },              {                "children":[                  {                    "prediction":{                      "confidence":0.969236433506012,                      "distribution":[0.95, 0.05],                      "value":"OFF",                      "nb_samples": 10                    },                    "decision_rule":{                      "operand":1,                      "operator":"<",                      "property":"peopleCount"                    }                  },                  {                    "prediction":{                      "confidence":0.8630361557006836,                      "distribution":[0.2, 0.8],                      "value":"ON",                      "nb_samples": 15                    },                    "decision_rule":{                      "operand":1,                      "operator":">=",                      "property":"peopleCount"                    }                  }                ],                "decision_rule":{                  "operand":[                    20.666666,                    5                  ],                  "operator":"[in[",                  "property":"timeOfDay"                }              }            ],            "decision_rule":{              "operand":[                5.6666665,                5              ],              "operator":"[in[",              "property":"timeOfDay"            }          }        ]      }    },    "configuration":{      "time_quantum":600,      "learning_period":9000000,      "context":{        "peopleCount":{          "type":"continuous"        },        "timeOfDay":{          "type":"time_of_day",          "is_generated":True        },        "timezone":{          "type":"timezone"        },        "lightbulbState":{          "type":"enum"        }      },      "output":[        "lightbulbState"      ]    }  }"""

    尝试在不同的时间点检索树,看看它是如何从新操作中逐渐学习的。若要可视化这些树,请使用检查程序!

    有关更多信息,请查看'compute decision tree'参考文档

    6-做出决定

    一旦计算出决策树,它就可以用来做出决策。在我们的案例中,它基本上回答了这类问题:"如果房间里有两个人,7:15时灯泡的预期状态是什么?"

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")context_list=...client.add_operations(agent_id,context_list)print("Successfully added initial operations to agent",agent_id,"!")dt_timestamp=1469476800decision_tree=client.get_decision_tree(agent_id,dt_timestamp)print("The decision tree at timestamp",dt_timestamp,"is the following:")print(decision_tree)context={"timezone":"+02:00","timeOfDay":7.25,"peopleCount":2}resp=client.decide(decision_tree,context)print("The anticipated lightbulb state is:",resp["output"]["lightbulbState"]["predicted_value"])

    有关更多信息,请查看"作出决定"参考文档

    python初学者工具包

    如果您希望从现有的代码库开始,那么官方的python初学者工具包可以帮助您实现这一点!在本地检索资源,然后按照"自述文件"使用真实世界获得一个完全有效的健康教练示例M>数据。< /P>< Buff行情>

    :包:获取craft aipython启动包

    API

    项目

    Craft AI代理属于项目。在当前版本中,每个确定的用户都定义了一个所有者并可以为自己创建项目,将来我们将引入共享项目。

    配置

    每个代理都有一个配置定义:

    < Buff行情>

    :警告:在当前版本中,只能提供一个输出属性。

    • time_quantum,即对代理有意义的最小时间量(以秒为单位);不会考虑比此quantum更快发生的上下文更新。根据经验,您应该始终选择看起来正确的最大值,并在某些测试之后(如有必要)减小该值。
    • 学习周期,即对代理重要的最长时间(以秒为单位);代理的决策模型可以忽略比该持续时间早的上下文。通常,您应该选择符合此描述的最小值。
    < Buff行情>

    :警告:如果未指定时间量,则默认值为600。

    < Buff行情>

    :警告:如果未指定学习周期,则默认值为15000时间量。

    < Buff行情>

    :警告:最大学习周期值为55000*时间量。

    上下文属性类型

    基类型:枚举连续布尔

    enumcontinuousboolean是工艺人工智能的三种基本类型:

    • 枚举属性是一个字符串;
    • 属性是实数。
    • 属性是一个布尔值:truefalse
    < Buff行情>

    :警告:连续属性的绝对值必须小于1020

    缺少值

    如果其中一个属性值丢失,则如果将键deactivate_missing_values:false添加到代理配置中,则可以处理后者。在此配置中,可以发送上下文属性值的null值,以告诉craft ai该值丢失。工艺人工智能将尽可能地考虑到这个不完整的上下文。

    缺少值的上下文如下所示:

    {"timestamp":1469415720,"context":{"timezone":"+02:00","temperature":null,"lightbulbState":"OFF"}}

    其相关配置为:

    pip install --upgrade craft-ai
    
    0

    可选值

    枚举连续布尔属性定义为可选,前提是后者明确称为不适用。例如,测量环境温度的传感器有时会故意脱机,这种行为必须视为正常,而不是缺少的属性。为了解决这类问题,我们引入了可选值。通过将is\u optional:true添加到配置中的类型属性,可以将属性定义为可选。然后,在上下文中,一个可选的值被定义为{},空的json对象:

    具有可选值的上下文如下所示:

    pip install --upgrade craft-ai
    
    1

    其相关配置为:

    pip install --upgrade craft-ai
    
    2
    时间类型:时区一天中的时间一周中的一天一个月中的一天一年中的一个月

    工艺人工智能定义了以下内容与时间相关的机翼类型:

    • atime-u of-day属性是属于[0.0;24.0[的实数,每个值表示从午夜开始一天中的小时数(例如13.5表示13:30),
    • 属性是属于[0,6]的整数,每个值表示从星期一开始的一周中的一天(0是星期一,6是星期日)。
    • 属性是属于[1,31]的整数,每个值代表一个月的一天。
    • 属性是属于[1,12]的整数,每个值代表一年中的一个月。
    • a时区属性可以是:
      • 表示时区与UTC的偏移量的字符串值,支持的格式为:

        • ?[hh]:[mm]
        • ?[hh][mm]
        • ?[hh]

        其中,hh表示从UTC(例如,+01:30)到 +14:00

      • 属于[-720840]的整数,表示时区与UTC的偏移量:

        • 如果整数属于[-15,15]
        • 否则在几分钟内
      • 以下简称:

        • UTCZ世界时协调,
        • 格林威治标准时间
        • BST英国夏令时,UTC+1小时,
        • 是爱尔兰夏季时间,如UTC+1,
        • 潮湿西欧时间,如UTC,
        • 西欧夏季时间,如UTC+1,
        • CET中欧时间,如UTC+1,
        • CEST中欧夏季时间,如UTC+2,
        • EET东欧时间,如UTC+2,
        • EEST东欧夏季时间,如UTC+3,
        • 莫斯科时间,UTC+3,
        • MSD莫斯科夏季时间,UTC+4,
        • AST大西洋标准时间,如UTC-4,
        • ADT大西洋夏令时,如UTC-3,
        • 东部标准时间,如UTC-5,
        • EDT东部夏时制时间,如UTC-4,
        • cst中央标准时间,如UTC-6,
        • CDT中央夏令时,如UTC-5,
        • MST山地标准时间,如UTC-7,
        • MDT山地夏令时,如UTC-6,
        • 太平洋标准时间,如UTC-8,
        • PDT太平洋夏令时,如UTC-7,
        • hst夏威夷标准时间,如UTC-10,
        • AKST阿拉斯加标准时间,如UTC-9,
        • AKDT阿拉斯加标准夏令时,如UTC-8,
        • 澳大利亚东部标准时间,如UTC+10,
        • 澳大利亚东部夏时制时间,如UTC+11,
        • ACST澳大利亚中部标准时间,如UTC+9.5,
        • 澳大利亚中部夏时制时间,如UTC+10.5,
        • AWST澳大利亚西部标准时间,如UTC+8。
    < Buff行情>

    :information_source:默认情况下,星期的time_的值day_的值 属性由代理的 状态和代理的当前时区。因此,每当您使用 一天中的时间和/或一周中的一天在您的配置中,必须提供 时区上下文中的值。只能有一个时间区域属性。

    如果您希望手动提供它们的值,请在 配置中的时间类型属性。在这种情况下,由于您提供了这些值, 时区属性不是必需的,您必须在任何时候更新上下文 其中一个时间值的变化对您的系统非常重要。

    示例

    让我们看看下面的配置。它设计用于根据外部光强度(light intensity属性)对灯泡的颜色建模(lightbulb color属性,定义为输出)。电视状态tvactivated属性)一天中的时间时间属性)和一周中的属性)。由于tvactivated在电视不在时没有任何意义,因此我们还将此属性指定为是可选的:true

    时间值将自动生成,因此需要 时区是当前时区,用于根据给定值计算它们的值 时间戳

    时间量子被设置为100秒,这意味着如果灯泡 颜色从红色变为蓝色,然后从蓝色变为紫色,小于1 分40秒,只有从红色到紫色的变化 帐户,

    学习周期设置为108000秒(一个月),这意味着 学习时可以忽略一个多月前灯泡的状态 决策模型。

    pip install --upgrade craft-ai
    
    3

    在第二个示例中,不生成时间属性 因此需要输入时区。但是time的值必须手动 连续提供。

    pip install --upgrade craft-ai
    
    4

    时间戳

    craft aiapi严重依赖于时间戳。a时间戳是表示为aUnix时间的一个瞬间,即自1970年1月1日星期四起在UTC午夜经过的秒数。在大多数编程语言中,此表示很容易检索,您可以参考此页了解如何检索。

    手工制作时间

    craft ai.time类有助于处理craftai中的时间类型。它能够从各种日期时间表示中提取不同的craft ai格式,这要归功于日期时间。

    pip install --upgrade craft-ai
    
    5

    高级配置

    以下高级配置参数可在特定情况下设置。它们是可选的。通常你不需要它们。

    • operations\u as_events是一个布尔值,可以是truefalse。默认值为false。如果设置为true,则所有上下文操作都将被视为事件,而不是上下文更新。如果代理的数据是由没有持续时间的事件组成的,并且如果许多事件比少数事件更重要,则这是适当的。如果operations_as_eventstrue,则还必须设置learning_period和高级参数tree_max_operations。在这种情况下,时间量子被忽略,因为事件没有持续时间,而不是代理上下文随时间的演化。
    • 树最大操作是正整数。只有当操作为事件时,才能且必须设置真。它定义了单个决策树可以基于的最大事件数。它是对学习周期的补充,学习周期限制了决策树所依据的事件的最长时间。
    • 树最大深度是正整数。它定义了决策树的最大深度,即根节点和叶(终端)节点之间的最大距离。深度为0表示树由单个根节点组成。默认情况下,如果输出是分类的(例如枚举),则将树最大深度设置为6;如果输出是数字的(例如连续),则将其设置为4。

    这些高级配置参数是可选的,仅当您将它们设置为默认值以外的其他值时,它们才会显示在craft ai返回的代理信息中。如果您打算在生产环境中使用它们,请与我们联系。

    代理

    创建

    创建一个新的代理,并创建它的配置

    < Buff行情>

    代理的标识符是一个大小写敏感的字符串,长度介于1到36个字符之间。它只接受字母、数字、连字符、减号和下划线(即正则表达式/[a-za-z0-9'-]{1,36}/)。

    pip install --upgrade craft-ai
    
    6

    删除

    pip install --upgrade craft-ai
    
    7

    检索

    pip install --upgrade craft-ai
    
    8

    列表

    pip install --upgrade craft-ai
    
    9

    创建和检索共享URL

    创建并获取可共享的url以查看代理树。 一次只能创建一个URL。

    importcraftai
    0

    删除共享URL

    删除可共享的URL。 上一个URL无法再访问代理树。

    importcraftai
    1

    上下文

    添加操作

    importcraftai
    2

    列出操作
    importcraftai
    3 < Buff行情>

    当结果分页时,此调用可以生成对craft ai api的多个请求。

    检索状态

    importcraftai
    4

    检索状态历史记录
    importcraftai
    5

    决策树

    决策树是在特定的时间戳上计算的,直接由craft ai进行计算,该ai从上下文操作中学习,在整个时间内添加了上下文操作。

    当您计算决策树时,craft ai返回一个包含以下内容的对象:

    • API版本

    • 在创建代理时指定的代理配置

    • 树本身作为json对象:

      • 内部节点由"decision_rule"对象和"children"数组表示。第一个属性包含"属性,以及"属性"的值,用于确定哪个子级与上下文匹配。
      • 叶具有此值的"预测值""置信度""决策规则"对象,而不是"子项"数组。"预测值"是在与节点匹配的上下文中对输出的估计。"confidence"是一个介于0和1之间的数字,表示craft ai对输出是可靠预测的信心有多大。当输出是数字类型时,leaves也有一个"标准偏差",它指示"预测值"周围的误差范围。
      • 根目录只包含一个"children"数组。

    计算

    importcraftai
    6

    做出决定 < Buff行情>

    :information_source:要做出决策,首先计算决策树,然后使用离线解释器

    体积

    craft ai api包括一个大容量路由,它提供了一个编程选项来对代理执行异步操作。它允许用户同时为多个代理创建、删除、添加操作和计算决策树。

    <封锁】E>

    :警告:批量API是一个相当高级的功能。它位于创建、删除、添加上下文操作和计算决策树的基本路由之上。如果消息不是自解释的,请参考对单个代理执行相同操作的基本路由。

    批量-创建

    要同时创建多个代理,请使用以下方法create_agents_bulk

    importcraftai
    7

    创建的代理变量是一个响应数组。如果已成功创建代理,则相应的响应是类似于经典的create_agent()响应的对象。当有混合结果时,创建的代理应该如下所示:

    importcraftai
    8

    批量-删除

    要同时删除多个代理,请使用以下方法delete\u agents\u bulk

    importcraftai
    9

    变量deleted\u agents是一个响应数组。如果已成功删除代理,则相应的响应是一个类似于经典的delete\u agent()响应的对象。当出现混合结果时,已删除的代理应该如下所示:

    client=craftai.Client({"token":"{token}"})
    0

    批量-添加上下文操作

    若要同时向多个代理添加操作,请使用方法add_operations_bulk如下:

    client=craftai.Client({"token":"{token}"})
    1

    变量agents是响应的数组。如果代理已成功接收操作,则相应的响应是类似于经典的add_operations()响应的对象。当出现混合结果时,代理应该如下所示:

    client=craftai.Client({"token":"{token}"})
    2

    批量计算决策树

    要同时获取多个代理的树,请使用以下方法:

    client=craftai.Client({"token":"{token}"})
    3

    变量是响应的数组。如果已成功创建代理的模型,则相应的响应是一个类似于经典的get_decision_trees_bulk()响应的对象。当有混合结果时,树应该如下所示:

    client=craftai.Client({"token":"{token}"})
    4

    高级客户端配置

    创建客户机的简单配置只是令牌。对于特殊需要,可以提供额外的高级配置。

    在一个块中发送的操作量

    client.add_operations将提供的操作拆分为块,以限制对craft ai api的http请求的大小。在客户端配置中,操作chunkssize可以增加以限制请求的数量,或者在大型http请求导致错误时减少。

    client=craftai.Client({"token":"{token}"})
    5

    检索决策树的超时时间

    可以增加或减少客户端的超时时间。获取"决策树",例如考虑到特别长的计算。

    client=craftai.Client({"token":"{token}"})
    6

    代理

    可以在客户机配置的proxy属性中提供代理配置。它将用于调用craft ai api(通过https)。所需的格式是主机名或IP和端口,可以选择前面加上凭据,例如http://user:pass@10.10.1.10:1080

    client=craftai.Client({"token":"{token}"})
    7

    高级网络配置

    对于更高级的网络配置,可以访问客户机用来通过客户机向craft ai api发送请求的请求会话。

    client=craftai.Client({"token":"{token}"})
    8

    口译员

    决策树解释器可以从通过API计算的决策树脱机使用。

    做出决定

    注意,python解释器接受一系列上下文。

    client=craftai.Client({"token":"{token}"})
    9

    经过计算的决定在enum上,输出类型如下:

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    0

    对于数值输出类型,adecision看起来像:

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    1

    对于分类输出类型,a决策看起来像:

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    2

    a决策在树无法进行预测的情况下:

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    3

    减少决策规则

    从决策规则列表中,在作出决策时检索,在作出决策时计算等效的最小规则列表。

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    4

    格式化决策规则

    从决策规则列表中,计算出这些规则的英文版。

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    5

    错误处理

    在使用这个客户机时,您应该根据eafp的原理,小心地用try/except块包装对api的调用。

    craft ai的python客户端有其特定的异常类型,所有这些异常类型都继承自craftailerror类型。

    所有必须发送http请求的方法(除了decise)都可能会引发以下异常之一:CraftainotFounderrorCraftaiBadrequesterrorCraftaiCredentialSerrorCraftaiUnknownError

    decise方法只会引发crafaidecisionerror类型的异常。当给定的上下文无效但无法做出决定时,将引发后者。

    熊猫支持

    craft ai python客户端可以选择支持一个非常流行的用于所有事物数据的库。

    基本上,您可以执行以下操作,而不是导入默认模块

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    6

    craft ai pandas模块是为vanilla一个派生的,重写了以下方法以支持pandas'dataframe

    craftai.pandas.client.get_operations_list

    检索所需的操作作为数据框其中:

    • 每个操作都是一行,
    • 每个上下文属性都是一列,
    • 索引是基于时间的时区感知并匹配操作时间戳,
    • np.nan表示此时间戳在该属性上没有给定值。
    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    7

    craftai.pandas.client.add_操作

    向所需代理添加操作的数据框。格式同上。

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    8

    给定一个不是数据帧的对象,此方法的行为类似于craftai.client.add_operations

    此外,缺失值和可选值可以由craft ai pandas客户端处理。为此,我们引入了两种新类型,分别是缺失值的craftai.pandas.missing_value可选值的craftai.pandas.optional_value。 若要发送带有实际缺失值或可选值的数据框,必须使用以下类型之一:

    agent_id="my_first_agent"configuration={"context":{"peopleCount":{"type":"continuous"},"timeOfDay":{"type":"time_of_day"},"timezone":{"type":"timezone"},"lightbulbState":{"type":"enum"}},"output":["lightbulbState"]}agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    9

    为了确保dataframe中包含的所有缺失值都是正确的格式,并且可以由craft ai pandas客户机处理,建议通过将所有na值替换为所需值来预处理后者:

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    0

    craftai.pandas.client.get_state_history

    检索所需的状态历史记录作为数据框其中:

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    1

    craftai.pandas.client.decise\u from\u contexts\u df

    对给定的数据帧执行多个决策,格式与上面相同。

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    2

    此函数还接受craft ai missing values和optional values类型,craftai.pandas.missing戥valuecraftai.pandas.optional戥value

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    3

    此函数从不引发CraftainullDecisionError,而是将这些错误插入结果DataFrame中的特定error列。

    craftai.pandas.utils.create_tree_html

    返回给定决策树的HTML版本。如果后者保存在.html文件中,则可以在 要可视化的浏览器。

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    4

    手工制作。熊猫。实用程序。显示树

    在Jupyter笔记本中显示决策树。 此函数可用于分析归纳的决策树。

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    5

    craftai.pandas.client.add_operations_bulk

    同时向多个代理添加操作。

    agent_id="my_first_agent"client.delete_agent(agent_id)print("Agent",agent_id,"no longer exists")configuration=...agent=client.create_agent(configuration,agent_id)print("Agent",agent["id"],"has successfully been created")
    6

    给定一个不是数据帧的对象,此方法的行为类似于craftai.client.add_operations_bulk

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格