Re: Crack Planner 5d

0 views
Skip to first unread message
Message has been deleted

Otniel Doetzel

unread,
Jul 17, 2024, 7:38:05 PM7/17/24
to lowdiatranper

So far, we have manually orchestrated all of the functions on behalf of the user. This, however, is not a scalable solution because it would require the app developer to predict all possible requests that could be made by the user. So instead, we will learn how to automatically orchestrate functions on the fly using planner. If you want to see the final solution, you can check out the following samples in the public documentation repository.

For example, if you had task and calendar event plugins, planner could combine them to create workflows like "remind me to buy milk when I go to the store" or "remind me to call my mom tomorrow" without you explicitly having to write code for those scenarios.

Crack Planner 5d


Download Zip https://vbooc.com/2yUrlL



With great power comes great responsibility, however. Because planner can combine functions in ways that you may not have thought of, it is important to make sure that you only expose functions that you want to be used in this way. It's also important to make sure that you apply responsible AI principles to your functions so that they are used in a way that is fair, reliable, safe, private, and secure.

For the purposes of this article, we'll build upon the same code we wrote in the previous section. Only this time, instead of relying on our own OrchestratorPlugin to chain the MathPlugin functions, we'll use planner to do it for us!

Before we use planner, let's add a few more functions to our MathPlugin class so we can have more options for our planner to choose from. The following code adds a Subtract, Multiply, and Divide function to our plugin.

To instantiate planner, all you need to do is pass it a kernel object. Planner will then automatically discover all of the plugins registered in the kernel and use them to create plans. The following code initializes both a kernel and a SequentialPlanner. At the end of this article we'll review the other types of Planners that are available in Semantic Kernel.

Now that we have planner, we can use it to create a plan for a user's ask and then invoke the plan to get a result. The following code asks our planner to solve a math problem that is difficult for an LLM to solve on its own because it requires multiple steps and it has numbers with decimal points.

Behind the scenes, planner uses an LLM prompt to generate a plan. You can see the prompt that is used by SequentialPlanner by navigating to the skprompt.txt file in the Semantic Kernel repository. You can also view the prompt used by the basic planner in Python.

With these steps, planner is given a set of rules that it can use to generate a plan in XML. Afterwards, the prompt provides a few examples of valid plans before finally providing the available_functions and user's goal.

Because the plan is returned as plain text (either as XML or JSON), we can print the results to inspect what plan planner actually created. The following code shows how to print the plan and the output for C# and Python.

Notice how in the example, planner can string together functions and pass parameters to them. This effectively allows us to deprecate the OrchestratorPlugin we created previously because we no longer need the RouteRequest native function or the GetNumbers semantic function. Planner does both.

As demonstrated by this example, planner is extremely powerful because it can automatically recombine functions you have already defined, and as AI models improve and as the community develops better planners, you will be able to rely on them to achieve increasingly more sophisticated user scenarios.

There are, however, considerations you should make before using a planner. The following table describes the top considerations you should make along with mitigations you can take to reduce their impact.

You now have the skills necessary to automatically generate plans for your users. You can use these skills to create more advanced AI apps that can handle increasingly complex scenarios. In the next section, you'll learn how to evaluate your planners with Prompt flow.

The new Microsoft Planner is bringing together the simplicity of Microsoft To Do, the collaboration of Microsoft Planner, the power of Microsoft Project for the web, and the intelligence of Microsoft Copilot into a simple, familiar experience. Sign up to be the first to know when it will be available as preview and generally available on Microsoft Teams in Spring 2024. Learn more about the announcement at aka.ms/thenewplanner.

The task of the planner/optimizer is to create an optimal execution plan. A given SQL query (and hence, a query tree) can be actually executed in a wide variety of different ways, each of which will produce the same set of results. If it is computationally feasible, the query optimizer will examine each of these possible execution plans, ultimately selecting the execution plan that is expected to run the fastest.

The planner's search procedure actually works with data structures called paths, which are simply cut-down representations of plans containing only as much information as the planner needs to make its decisions. After the cheapest path is determined, a full-fledged plan tree is built to pass to the executor. This represents the desired execution plan in sufficient detail for the executor to run it. In the rest of this section we'll ignore the distinction between paths and plans.

The planner/optimizer starts by generating plans for scanning each individual relation (table) used in the query. The possible plans are determined by the available indexes on each relation. There is always the possibility of performing a sequential scan on a relation, so a sequential scan plan is always created. Assume an index is defined on a relation (for example a B-tree index) and a query contains the restriction relation.attribute OPR constant. If relation.attribute happens to match the key of the B-tree index and OPR is one of the operators listed in the index's operator class, another plan is created using the B-tree index to scan the relation. If there are further indexes present and the restrictions in the query happen to match a key of an index, further plans will be considered. Index scan plans are also generated for indexes that have a sort ordering that can match the query's ORDER BY clause (if any), or a sort ordering that might be useful for merge joining (see below).

When the query involves more than two relations, the final result must be built up by a tree of join steps, each with two inputs. The planner examines different possible join sequences to find the cheapest one.

If the query uses fewer than geqo_threshold relations, a near-exhaustive search is conducted to find the best join sequence. The planner preferentially considers joins between any two relations for which there exists a corresponding join clause in the WHERE qualification (i.e., for which a restriction like where rel1.attr1=rel2.attr2 exists). Join pairs with no join clause are considered only when there is no other choice, that is, a particular relation has no available join clauses to any other relation. All possible plans are generated for every join pair considered by the planner, and the one that is (estimated to be) the cheapest is chosen.

The finished plan tree consists of sequential or index scans of the base relations, plus nested-loop, merge, or hash join nodes as needed, plus any auxiliary steps needed, such as sort nodes or aggregate-function calculation nodes. Most of these plan node types have the additional ability to do selection (discarding rows that do not meet a specified Boolean condition) and projection (computation of a derived column set based on given column values, that is, evaluation of scalar expressions where needed). One of the responsibilities of the planner is to attach selection conditions from the WHERE clause and computation of required output expressions to the most appropriate nodes of the plan tree.

Top-quality Day-Timer planner covers are designed to give you flexibility in how you plan your successes and record your achievements. Available for loose-leaf or wirebound pages, planner covers come in a variety of sizes and styles that allow you to create the planner that best accommodates your planning routine.

Your space matters. Planning and designing it can be challenging, which is why Floorplanner exists. We believe that planning your space shouldn't be difficult, expensive, or exclusive to professionals. It should be easy, accessible, fun, and free for everyone. Since 2007, we've taken it upon ourselves to build a platform to provide just that.

Having an accurate floorplan of your space is extremely useful for making informed design decisions and avoiding costly mistakes. Floorplanner's editor helps you quickly and easily recreate any type of space in just minutes, without the need for any software or training. Draw your rooms, move walls, and add doors and windows with ease to create a Digital Twin of your own space.

Floorplanner's library, of over 260.000 3D models, is available to all our users at no extra cost. Our library is vast and diverse, and it includes a wide variety of furniture items suitable for both residential and commercial spaces.

We believe that a service like Floorplanner can and should be freely accessible in some sort of basic, useful form for everyone in the world, and we have been offering exactly that since 2007 with our Basic account.

Floorplanner has become an indispensable and trusted tool for many people worldwide, perfect for those planning a move or with a sudden urge to redecorate their living spaces. Even with a free account, you can still access and work on projects you started years ago. Your plans are always there for you.

Floorplanner has always been free for schools since we started in 2007. It's been amazing to see how millions of students and thousands of schools have used our tool as part of their lessons and projects.

aa06259810
Reply all
Reply to author
Forward
0 new messages