
? AI -Anwendungs -Framework, das Funktionen mit LLM erleichtert?
Entdecken Sie unsere Kochbücher für Tutorials und Beispiele!
Zwietracht
Notizbücher, um loszulegen:
Sterne uns auf Github!
ActionWeaver ist bestrebt, das zuverlässigste, benutzerfreundlichste und kostengünstigste und kostengünstigste Funktionsanzug für KI-Ingenieure zu sein.
Merkmale:
Sie können ActionWeaver mit PIP installieren:
pip install actionweaver Verwenden Sie die neueste OpenAI -API, die die parallele Funktion unterstützt!
from actionweaver . llms import wrap
from openai import OpenAI
openai_client = wrap ( OpenAI ())oder mit dem Azure OpenAI -Service
import os
from openai import AzureOpenAI
azure_client = wrap ( AzureOpenAI (
azure_endpoint = os . getenv ( "AZURE_OPENAI_ENDPOINT" ),
api_key = os . getenv ( "AZURE_OPENAI_KEY" ),
api_version = "2023-10-01-preview"
))Der ActionWeaver -Kunde verwaltet die Funktionsaufruf -Schleife, die Übergabe von Funktionsbeschreibungen, Funktionen mit Argumenten, die von LLM zurückgegeben wurden, und den Umgang mit Ausnahmen umfassen.
Dieser Kunde wird eine API create die auf der originalen chat.completions.create -API erstellt wird. Die erweiterte create -API behält alle ursprünglichen Argumente bei und enthält zusätzliche Parameter wie:
action : Bereitstellung verfügbarer Aktionen für LLM.orch : ORCHESTRATIEREN Aktionen während der gesamten Funktionsschleife.exception_handler : Ein Objekt, das die Funktionsschleife zum Umgang mit Ausnahmen leitet. Diese Argumente werden in den nachfolgenden Abschnitten demonstriert. Diese zusätzlichen Argumente sind optional, und es gibt immer die Fallback -Option, um auf den ursprünglichen OpenAI -Client über openai_client.client zuzugreifen.
Hinweis : Eine
actionstellt ein Tool dar, das von LLM verwendet werden kann. Jede Aktion umfasst zwei Hauptelemente: ein pydantisches Modell, das automatisch generiert wird, um die Aufforderung zu erleichtern, und eine konventionelle Pythonfunktion.
Entwickler können jede Python -Funktion als Aktion mit einem einfachen Dekorator anbringen. Im folgenden Beispiel führen wir Aktionen GetCurrentTime ein und verwenden dann die OpenAI -API, um sie aufzurufen.
ActionWeaver verwendet die Signatur und DocString der dekorierten Methode als Beschreibung und weiterhin an die Funktionsfunktion von Openai. Der Action -Dekorateur ist ebenfalls sehr anpassungsfähig und kann mit anderen Dekoratoren kombiniert werden, sofern die ursprüngliche Signatur erhalten bleibt.
from actionweaver import action
@ action ( name = "GetCurrentTime" )
def get_current_time () -> str :
"""
Use this for getting the current time in the specified time zone.
:return: A string representing the current time in the specified time zone.
"""
import datetime
current_time = datetime . datetime . now ()
return f"The current time is { current_time } "
# Ask LLM what time is it
response = openai_client . create (
model = "gpt-4o" ,
messages = [{ "role" : "user" , "content" : "what time is it" }],
actions = [ get_current_time ]
)Schauen Sie sich an, was an Openai API vorbeikommt
get_current_weather . get_function_details ()
"""
{'name': 'GetWeather',
'description': 'Get the current weather in a given location',
'parameters': {'properties': {'location': {'title': 'Location'},
'unit': {'default': 'fahrenheit', 'title': 'Unit'}},
'required': ['location'],
'title': 'Get_Current_Weather',
'type': 'object'}}
""" Sie können das Sprachmodell auch erzwingen, um die Aktion auszuführen, indem Sie die invoke -Methode einer Aktion aufrufen. Zu den Argumenten gehören der von ActionWeaver umgestellte Client und andere Argumente, die an die API erstellen.
get_current_time . invoke ( openai_client , messages = [{ "role" : "user" , "content" : "what time is it" }], model = "gpt-3.5-turbo" , stream = False , force = True ) Sie können ein pydantisches Modell erstellen, um die strukturellen Daten zu definieren, die Sie extrahieren möchten, eine Aktion unter Verwendung von action_from_model erstellen und dann das Sprachmodell erzwingen, strukturierte Daten aus Informationen in der Eingabeaufforderung zu extrahieren.
from pydantic import BaseModel
from actionweaver . actions . factories . pydantic_model_to_action import action_from_model
class User ( BaseModel ):
name : str
age : int
action_from_model ( User , stop = True ). invoke ( client , messages = [{ "role" : "user" , "content" : "Tom is 31 years old" }], model = "gpt-3.5-turbo" , stream = False , force = False )HINWEIS : Die
stop-Eigenschaft einer Aktion mit einem Standardwert von False bestimmt, ob die Funktionsschleife der Funktion das Ergebnis der Aktion sofort zurückgibt, anstatt sie an LLM weiterzugeben, wenn sie auf true festgelegt werden.
Hinweis : Sie können gleichzeitig Aktionen übergeben, die sowohl aus Funktionen als auch aus pydantischen Modellen erzeugt werden.
ActionWeaver ermöglicht die Gestaltung von Hierarchien und Ketten von Handlungen, indem es in orch -Argumentation weitergegeben wird. orch ist eine Zuordnung von Aktionen als Schlüssel zu Werten, einschließlich
Nehmen wir zum Beispiel an, wir haben Aktionen A1, A2, A3.
client . create (
[
{ "role" : "user" , "content" : "message" }
],
actions = [ a1 , a2 , a3 ], # First, LLM respond with either a1, a2 or a3, or text without action
# Define the orchestration logic for actions:
orch = {
a1 . name : [ a2 , a3 ], # If a1 is invoked, the next response will be either a2, a3 or a text response.
a2 . name : a3 , # If a2 is invoked, the next action will be a3
a3 . name : [ a4 ] # If a3 is invoked, the next response will be a4 or a text response.
a4 . name : None # If a4 is invoked, the next response will guarantee to be a text message
}
) Benutzer können eine spezifische Implementierung von ExceptionHandler bereitstellen, wobei die handle_exception -Methode bei der Begegnung einer Ausnahme aufgerufen wird. Der info -Parameter verkauft kontextbezogene Details wie Nachrichten und API -Antworten in einem Wörterbuch.
Die handle_exception -Methode bestimmt die Vorgehensweise für die Funktionsaufruf -Schleife und gibt entweder zurück:
Return : Bereitstellung sofortiger Inhalte an den Benutzer zurückContinue : Unterweisen Sie die Schleife, fortzufahren. from actionweaver . llms import ExceptionAction , ChatLoopInfo , Continue , Return
class ExceptionHandler ( ABC ):
"""Base class for exception handlers.
This class provides a framework for handling exceptions within the function calling loop.
"""
@ abstractmethod
def handle_exception ( self , e : Exception , info : ChatLoopInfo ) -> ExceptionAction :
passSchauen Sie sich dieses Beispiel für Details an.
Beiträge in Form von Fehlerbehebungen, neuen Funktionen, Dokumentationsverbesserungen und Zuganfragen sind sehr begrüßt.
Wenn Sie ActionWeaver nützlich finden, sollten Sie das Projekt zitieren:
@software{Teng_Hu_ActionWeaver_2024,
author = {Teng Hu},
license = {Apache-2.0},
month = Aug,
title = {ActionWeaver: Application Framework for LLMs},
url = {https://github.com/TengHu/ActionWeaver},
year = {2024}
}