agenta 0.6.10__py3-none-any.whl → 0.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of agenta might be problematic. Click here for more details.
- agenta/__init__.py +1 -0
- agenta/cli/telemetry.py +6 -4
- agenta/cli/variant_commands.py +0 -2
- agenta/config.py +4 -1
- agenta/sdk/__init__.py +1 -0
- agenta/sdk/agenta_decorator.py +16 -6
- agenta/sdk/agenta_init.py +4 -4
- agenta/sdk/types.py +14 -1
- agenta/sdk/utils/helper/openai_cost.py +166 -0
- agenta-0.7.1.dist-info/METADATA +318 -0
- {agenta-0.6.10.dist-info → agenta-0.7.1.dist-info}/RECORD +13 -12
- agenta-0.6.10.dist-info/METADATA +0 -240
- {agenta-0.6.10.dist-info → agenta-0.7.1.dist-info}/WHEEL +0 -0
- {agenta-0.6.10.dist-info → agenta-0.7.1.dist-info}/entry_points.txt +0 -0
agenta/__init__.py
CHANGED
agenta/cli/telemetry.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# Stdlib Imports
|
|
2
|
-
import
|
|
3
|
-
from pathlib import Path
|
|
2
|
+
from uuid import uuid4
|
|
4
3
|
|
|
5
4
|
# Own Imports
|
|
6
5
|
from agenta.cli import helper
|
|
@@ -26,7 +25,6 @@ class EventTracking(Posthog):
|
|
|
26
25
|
|
|
27
26
|
def capture_event(
|
|
28
27
|
self,
|
|
29
|
-
distinct_id: str,
|
|
30
28
|
event_name: str,
|
|
31
29
|
body: dict,
|
|
32
30
|
) -> None:
|
|
@@ -34,11 +32,15 @@ class EventTracking(Posthog):
|
|
|
34
32
|
Captures an event.
|
|
35
33
|
|
|
36
34
|
Args:
|
|
37
|
-
distinct_id (str): A unique identifier for the user or entity associated with the event.
|
|
38
35
|
event_name (str): The name of the event being captured.
|
|
39
36
|
body (dict): Contains the data associated with the event being captured.
|
|
40
37
|
"""
|
|
41
38
|
|
|
39
|
+
# A unique identifier for the user or entity associated with the event
|
|
40
|
+
distinct_id = helper.get_global_config("telemetry_distinct_id")
|
|
41
|
+
if not distinct_id:
|
|
42
|
+
distinct_id = uuid4()
|
|
43
|
+
helper.set_global_config("telemetry_distinct_id", str(distinct_id))
|
|
42
44
|
self.capture(distinct_id, event_name, body)
|
|
43
45
|
|
|
44
46
|
|
agenta/cli/variant_commands.py
CHANGED
|
@@ -177,7 +177,6 @@ def add_variant(
|
|
|
177
177
|
get_user_id = client.user_profile()
|
|
178
178
|
user_id = get_user_id["id"]
|
|
179
179
|
event_track.capture_event(
|
|
180
|
-
user_id,
|
|
181
180
|
"app_deployment",
|
|
182
181
|
body={
|
|
183
182
|
"app_id": app_id,
|
|
@@ -200,7 +199,6 @@ def add_variant(
|
|
|
200
199
|
get_user_id = client.user_profile()
|
|
201
200
|
user_id = get_user_id["id"]
|
|
202
201
|
event_track.capture_event(
|
|
203
|
-
user_id,
|
|
204
202
|
"app_deployment",
|
|
205
203
|
body={
|
|
206
204
|
"app_id": app_id,
|
agenta/config.py
CHANGED
agenta/sdk/__init__.py
CHANGED
agenta/sdk/agenta_decorator.py
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
"""The code for the Agenta SDK"""
|
|
2
2
|
import os
|
|
3
3
|
import sys
|
|
4
|
+
import time
|
|
4
5
|
import inspect
|
|
5
6
|
import argparse
|
|
6
7
|
import traceback
|
|
7
8
|
import functools
|
|
8
9
|
from pathlib import Path
|
|
9
10
|
from tempfile import NamedTemporaryFile
|
|
10
|
-
from typing import Any, Callable, Dict, Optional, Tuple, List
|
|
11
|
+
from typing import Any, Callable, Dict, Optional, Tuple, List, Union
|
|
11
12
|
|
|
12
13
|
from fastapi import Body, FastAPI, UploadFile
|
|
13
|
-
from fastapi.middleware.cors import CORSMiddleware
|
|
14
14
|
from fastapi.responses import JSONResponse
|
|
15
|
+
from fastapi.middleware.cors import CORSMiddleware
|
|
15
16
|
|
|
16
17
|
import agenta
|
|
17
18
|
from .context import save_context
|
|
@@ -26,6 +27,7 @@ from .types import (
|
|
|
26
27
|
TextParam,
|
|
27
28
|
MessagesInput,
|
|
28
29
|
FileInputURL,
|
|
30
|
+
FuncResponse,
|
|
29
31
|
BinaryParam,
|
|
30
32
|
)
|
|
31
33
|
|
|
@@ -91,7 +93,7 @@ def entrypoint(func: Callable[..., Any]) -> Callable[..., Any]:
|
|
|
91
93
|
|
|
92
94
|
update_function_signature(wrapper, func_signature, config_params, ingestible_files)
|
|
93
95
|
route = f"/{endpoint_name}"
|
|
94
|
-
app.post(route)(wrapper)
|
|
96
|
+
app.post(route, response_model=FuncResponse)(wrapper)
|
|
95
97
|
|
|
96
98
|
update_deployed_function_signature(
|
|
97
99
|
wrapper_deployed,
|
|
@@ -99,7 +101,7 @@ def entrypoint(func: Callable[..., Any]) -> Callable[..., Any]:
|
|
|
99
101
|
ingestible_files,
|
|
100
102
|
)
|
|
101
103
|
route_deployed = f"/{endpoint_name}_deployed"
|
|
102
|
-
app.post(route_deployed)(wrapper_deployed)
|
|
104
|
+
app.post(route_deployed, response_model=FuncResponse)(wrapper_deployed)
|
|
103
105
|
override_schema(
|
|
104
106
|
openapi_schema=app.openapi(),
|
|
105
107
|
func_name=func.__name__,
|
|
@@ -149,7 +151,9 @@ def ingest_files(
|
|
|
149
151
|
func_params[name] = ingest_file(func_params[name])
|
|
150
152
|
|
|
151
153
|
|
|
152
|
-
async def execute_function(
|
|
154
|
+
async def execute_function(
|
|
155
|
+
func: Callable[..., Any], *args, **func_params
|
|
156
|
+
) -> Union[Dict[str, Any], JSONResponse]:
|
|
153
157
|
"""Execute the function and handle any exceptions."""
|
|
154
158
|
|
|
155
159
|
try:
|
|
@@ -159,14 +163,20 @@ async def execute_function(func: Callable[..., Any], *args, **func_params) -> An
|
|
|
159
163
|
it awaits their execution.
|
|
160
164
|
"""
|
|
161
165
|
is_coroutine_function = inspect.iscoroutinefunction(func)
|
|
166
|
+
start_time = time.perf_counter()
|
|
162
167
|
if is_coroutine_function:
|
|
163
168
|
result = await func(*args, **func_params)
|
|
164
169
|
else:
|
|
165
170
|
result = func(*args, **func_params)
|
|
171
|
+
end_time = time.perf_counter()
|
|
172
|
+
latency = end_time - start_time
|
|
166
173
|
|
|
167
174
|
if isinstance(result, Context):
|
|
168
175
|
save_context(result)
|
|
169
|
-
|
|
176
|
+
if isinstance(result, Dict):
|
|
177
|
+
return FuncResponse(**result, latency=round(latency, 4)).dict()
|
|
178
|
+
if isinstance(result, str):
|
|
179
|
+
return FuncResponse(message=result, latency=round(latency, 4)).dict()
|
|
170
180
|
except Exception as e:
|
|
171
181
|
return handle_exception(e)
|
|
172
182
|
|
agenta/sdk/agenta_init.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from agenta.client.exceptions import APIRequestError
|
|
2
|
+
from agenta.client.backend.client import AgentaApi
|
|
1
3
|
import os
|
|
2
4
|
import logging
|
|
3
5
|
from typing import Any, Optional
|
|
@@ -7,8 +9,6 @@ from .utils.globals import set_global
|
|
|
7
9
|
logger = logging.getLogger(__name__)
|
|
8
10
|
logger.setLevel(logging.DEBUG)
|
|
9
11
|
|
|
10
|
-
from agenta.client.backend.client import AgentaApi
|
|
11
|
-
from agenta.client.exceptions import APIRequestError
|
|
12
12
|
|
|
13
13
|
BACKEND_URL_SUFFIX = os.environ.get("BACKEND_URL_SUFFIX", "api")
|
|
14
14
|
CLIENT_API_KEY = os.environ.get("AGENTA_API_KEY")
|
|
@@ -104,11 +104,11 @@ class Config:
|
|
|
104
104
|
else:
|
|
105
105
|
self.persist = True
|
|
106
106
|
|
|
107
|
-
def register_default(self, overwrite=
|
|
107
|
+
def register_default(self, overwrite=False, **kwargs):
|
|
108
108
|
"""alias for default"""
|
|
109
109
|
return self.default(overwrite=overwrite, **kwargs)
|
|
110
110
|
|
|
111
|
-
def default(self, overwrite=
|
|
111
|
+
def default(self, overwrite=False, **kwargs):
|
|
112
112
|
"""Saves the default parameters to the app_name and base_name in case they are not already saved.
|
|
113
113
|
Args:
|
|
114
114
|
overwrite: Whether to overwrite the existing configuration or not
|
agenta/sdk/types.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from typing import Any, Dict, List
|
|
2
|
+
from typing import Any, Dict, List, Optional
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, Extra, HttpUrl, Field
|
|
5
5
|
|
|
@@ -10,6 +10,19 @@ class InFile:
|
|
|
10
10
|
self.file_path = file_path
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
class LLMTokenUsage(BaseModel):
|
|
14
|
+
completion_tokens: int
|
|
15
|
+
prompt_tokens: int
|
|
16
|
+
total_tokens: int
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class FuncResponse(BaseModel):
|
|
20
|
+
message: str
|
|
21
|
+
usage: Optional[LLMTokenUsage]
|
|
22
|
+
cost: Optional[float]
|
|
23
|
+
latency: float
|
|
24
|
+
|
|
25
|
+
|
|
13
26
|
class DictInput(dict):
|
|
14
27
|
def __new__(cls, default_keys=None):
|
|
15
28
|
instance = super().__new__(cls, default_keys)
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# https://raw.githubusercontent.com/langchain-ai/langchain/23eb480c3866db8693a3a2d63b787c898c54bb35/libs/community/langchain_community/callbacks/openai_info.py
|
|
2
|
+
MODEL_COST_PER_1K_TOKENS = {
|
|
3
|
+
# GPT-4 input
|
|
4
|
+
"gpt-4": 0.03,
|
|
5
|
+
"gpt-4-0314": 0.03,
|
|
6
|
+
"gpt-4-0613": 0.03,
|
|
7
|
+
"gpt-4-32k": 0.06,
|
|
8
|
+
"gpt-4-32k-0314": 0.06,
|
|
9
|
+
"gpt-4-32k-0613": 0.06,
|
|
10
|
+
"gpt-4-vision-preview": 0.01,
|
|
11
|
+
"gpt-4-1106-preview": 0.01,
|
|
12
|
+
# GPT-4 output
|
|
13
|
+
"gpt-4-completion": 0.06,
|
|
14
|
+
"gpt-4-0314-completion": 0.06,
|
|
15
|
+
"gpt-4-0613-completion": 0.06,
|
|
16
|
+
"gpt-4-32k-completion": 0.12,
|
|
17
|
+
"gpt-4-32k-0314-completion": 0.12,
|
|
18
|
+
"gpt-4-32k-0613-completion": 0.12,
|
|
19
|
+
"gpt-4-vision-preview-completion": 0.03,
|
|
20
|
+
"gpt-4-1106-preview-completion": 0.03,
|
|
21
|
+
# GPT-3.5 input
|
|
22
|
+
"gpt-3.5-turbo": 0.0015,
|
|
23
|
+
"gpt-3.5-turbo-0301": 0.0015,
|
|
24
|
+
"gpt-3.5-turbo-0613": 0.0015,
|
|
25
|
+
"gpt-3.5-turbo-1106": 0.001,
|
|
26
|
+
"gpt-3.5-turbo-instruct": 0.0015,
|
|
27
|
+
"gpt-3.5-turbo-16k": 0.003,
|
|
28
|
+
"gpt-3.5-turbo-16k-0613": 0.003,
|
|
29
|
+
# GPT-3.5 output
|
|
30
|
+
"gpt-3.5-turbo-completion": 0.002,
|
|
31
|
+
"gpt-3.5-turbo-0301-completion": 0.002,
|
|
32
|
+
"gpt-3.5-turbo-0613-completion": 0.002,
|
|
33
|
+
"gpt-3.5-turbo-1106-completion": 0.002,
|
|
34
|
+
"gpt-3.5-turbo-instruct-completion": 0.002,
|
|
35
|
+
"gpt-3.5-turbo-16k-completion": 0.004,
|
|
36
|
+
"gpt-3.5-turbo-16k-0613-completion": 0.004,
|
|
37
|
+
# Azure GPT-35 input
|
|
38
|
+
"gpt-35-turbo": 0.0015, # Azure OpenAI version of ChatGPT
|
|
39
|
+
"gpt-35-turbo-0301": 0.0015, # Azure OpenAI version of ChatGPT
|
|
40
|
+
"gpt-35-turbo-0613": 0.0015,
|
|
41
|
+
"gpt-35-turbo-instruct": 0.0015,
|
|
42
|
+
"gpt-35-turbo-16k": 0.003,
|
|
43
|
+
"gpt-35-turbo-16k-0613": 0.003,
|
|
44
|
+
# Azure GPT-35 output
|
|
45
|
+
"gpt-35-turbo-completion": 0.002, # Azure OpenAI version of ChatGPT
|
|
46
|
+
"gpt-35-turbo-0301-completion": 0.002, # Azure OpenAI version of ChatGPT
|
|
47
|
+
"gpt-35-turbo-0613-completion": 0.002,
|
|
48
|
+
"gpt-35-turbo-instruct-completion": 0.002,
|
|
49
|
+
"gpt-35-turbo-16k-completion": 0.004,
|
|
50
|
+
"gpt-35-turbo-16k-0613-completion": 0.004,
|
|
51
|
+
# Others
|
|
52
|
+
"text-ada-001": 0.0004,
|
|
53
|
+
"ada": 0.0004,
|
|
54
|
+
"text-babbage-001": 0.0005,
|
|
55
|
+
"babbage": 0.0005,
|
|
56
|
+
"text-curie-001": 0.002,
|
|
57
|
+
"curie": 0.002,
|
|
58
|
+
"text-davinci-003": 0.02,
|
|
59
|
+
"text-davinci-002": 0.02,
|
|
60
|
+
"code-davinci-002": 0.02,
|
|
61
|
+
# Fine Tuned input
|
|
62
|
+
"babbage-002-finetuned": 0.0016,
|
|
63
|
+
"davinci-002-finetuned": 0.012,
|
|
64
|
+
"gpt-3.5-turbo-0613-finetuned": 0.012,
|
|
65
|
+
# Fine Tuned output
|
|
66
|
+
"babbage-002-finetuned-completion": 0.0016,
|
|
67
|
+
"davinci-002-finetuned-completion": 0.012,
|
|
68
|
+
"gpt-3.5-turbo-0613-finetuned-completion": 0.016,
|
|
69
|
+
# Azure Fine Tuned input
|
|
70
|
+
"babbage-002-azure-finetuned": 0.0004,
|
|
71
|
+
"davinci-002-azure-finetuned": 0.002,
|
|
72
|
+
"gpt-35-turbo-0613-azure-finetuned": 0.0015,
|
|
73
|
+
# Azure Fine Tuned output
|
|
74
|
+
"babbage-002-azure-finetuned-completion": 0.0004,
|
|
75
|
+
"davinci-002-azure-finetuned-completion": 0.002,
|
|
76
|
+
"gpt-35-turbo-0613-azure-finetuned-completion": 0.002,
|
|
77
|
+
# Legacy fine-tuned models
|
|
78
|
+
"ada-finetuned-legacy": 0.0016,
|
|
79
|
+
"babbage-finetuned-legacy": 0.0024,
|
|
80
|
+
"curie-finetuned-legacy": 0.012,
|
|
81
|
+
"davinci-finetuned-legacy": 0.12,
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def standardize_model_name(
|
|
86
|
+
model_name: str,
|
|
87
|
+
is_completion: bool = False,
|
|
88
|
+
) -> str:
|
|
89
|
+
"""
|
|
90
|
+
Standardize the model name to a format that can be used in the OpenAI API.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
model_name: Model name to standardize.
|
|
94
|
+
is_completion: Whether the model is used for completion or not.
|
|
95
|
+
Defaults to False.
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
Standardized model name.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
model_name = model_name.lower()
|
|
102
|
+
if ".ft-" in model_name:
|
|
103
|
+
model_name = model_name.split(".ft-")[0] + "-azure-finetuned"
|
|
104
|
+
if ":ft-" in model_name:
|
|
105
|
+
model_name = model_name.split(":")[0] + "-finetuned-legacy"
|
|
106
|
+
if "ft:" in model_name:
|
|
107
|
+
model_name = model_name.split(":")[1] + "-finetuned"
|
|
108
|
+
if is_completion and (
|
|
109
|
+
model_name.startswith("gpt-4")
|
|
110
|
+
or model_name.startswith("gpt-3.5")
|
|
111
|
+
or model_name.startswith("gpt-35")
|
|
112
|
+
or ("finetuned" in model_name and "legacy" not in model_name)
|
|
113
|
+
):
|
|
114
|
+
return model_name + "-completion"
|
|
115
|
+
else:
|
|
116
|
+
return model_name
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def get_openai_token_cost_for_model(
|
|
120
|
+
model_name: str, num_tokens: int, is_completion: bool = False
|
|
121
|
+
) -> float:
|
|
122
|
+
"""
|
|
123
|
+
Get the cost in USD for a given model and number of tokens.
|
|
124
|
+
|
|
125
|
+
Args:
|
|
126
|
+
model_name: Name of the model
|
|
127
|
+
num_tokens: Number of tokens.
|
|
128
|
+
is_completion: Whether the model is used for completion or not.
|
|
129
|
+
Defaults to False.
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
Cost in USD.
|
|
133
|
+
"""
|
|
134
|
+
|
|
135
|
+
model_name = standardize_model_name(model_name, is_completion=is_completion)
|
|
136
|
+
if model_name not in MODEL_COST_PER_1K_TOKENS:
|
|
137
|
+
raise ValueError(
|
|
138
|
+
f"Unknown model: {model_name}. Please provide a valid OpenAI model name."
|
|
139
|
+
"Known models are: " + ", ".join(MODEL_COST_PER_1K_TOKENS.keys())
|
|
140
|
+
)
|
|
141
|
+
return MODEL_COST_PER_1K_TOKENS[model_name] * (num_tokens / 1000)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def calculate_token_usage(model_name: str, token_usage: dict) -> float:
|
|
145
|
+
"""Calculates the total cost of using a language model based on the model name and token
|
|
146
|
+
usage.
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
model_name: The name of the model used to determine the cost per token.
|
|
150
|
+
token_usage: Contains information about the usage of tokens for a particular model.
|
|
151
|
+
|
|
152
|
+
Returns:
|
|
153
|
+
Total cost of using a model.
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
completion_tokens = token_usage.get("completion_tokens", 0)
|
|
157
|
+
prompt_tokens = token_usage.get("prompt_tokens", 0)
|
|
158
|
+
model_name = standardize_model_name(model_name)
|
|
159
|
+
if model_name in MODEL_COST_PER_1K_TOKENS:
|
|
160
|
+
completion_cost = get_openai_token_cost_for_model(
|
|
161
|
+
model_name, completion_tokens, is_completion=True
|
|
162
|
+
)
|
|
163
|
+
prompt_cost = get_openai_token_cost_for_model(model_name, prompt_tokens)
|
|
164
|
+
total_cost = prompt_cost + completion_cost
|
|
165
|
+
return total_cost
|
|
166
|
+
return 0
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: agenta
|
|
3
|
+
Version: 0.7.1
|
|
4
|
+
Summary: The SDK for agenta is an open-source LLMOps platform.
|
|
5
|
+
Home-page: https://agenta.ai
|
|
6
|
+
Keywords: LLMOps,LLM,evaluation,prompt engineering
|
|
7
|
+
Author: Mahmoud Mabrouk
|
|
8
|
+
Author-email: mahmoud@agenta.ai
|
|
9
|
+
Requires-Python: >=3.9,<4.0
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
18
|
+
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
19
|
+
Requires-Dist: docker (>=6.1.1,<7.0.0)
|
|
20
|
+
Requires-Dist: fastapi (>=0.96.1)
|
|
21
|
+
Requires-Dist: importlib-metadata (>=6.7.0,<7.0.0)
|
|
22
|
+
Requires-Dist: ipdb (>=0.13)
|
|
23
|
+
Requires-Dist: posthog (>=3.1.0,<4.0.0)
|
|
24
|
+
Requires-Dist: pydantic (==1.10.13)
|
|
25
|
+
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
26
|
+
Requires-Dist: python-multipart (>=0.0.6,<0.0.7)
|
|
27
|
+
Requires-Dist: questionary (>=1.10.0,<2.0.0)
|
|
28
|
+
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
|
29
|
+
Project-URL: Documentation, https://docs.agenta.ai
|
|
30
|
+
Project-URL: Repository, https://github.com/agenta-ai/agenta
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
<div align="center" style="margin: 30px">
|
|
34
|
+
<a href="https://agenta.ai/">
|
|
35
|
+
<div align="center" >
|
|
36
|
+
<picture >
|
|
37
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/a356f263-6f5e-43df-8b58-4c183b8d8878" >
|
|
38
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/68e055d4-d7b8-4943-992f-761558c64253" >
|
|
39
|
+
<img alt="Shows the logo of agenta" src="https://github.com/Agenta-AI/agenta/assets/4510758/68e055d4-d7b8-4943-992f-761558c64253" >
|
|
40
|
+
</picture>
|
|
41
|
+
</div>
|
|
42
|
+
</a>
|
|
43
|
+
<h4 align="center">
|
|
44
|
+
<a href="https://agenta.ai">Home Page</a> |
|
|
45
|
+
<a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA">Slack</a> |
|
|
46
|
+
<a href="https://docs.agenta.ai/">Documentation</a>
|
|
47
|
+
</h4>
|
|
48
|
+
<div align="center">
|
|
49
|
+
<strong>Quickly iterate, debug, and evaluate your LLM apps</strong><br />
|
|
50
|
+
The open-source LLMOps platform for prompt-engineering, evaluation, human feedback, and deployment of complex LLM apps.
|
|
51
|
+
</div>
|
|
52
|
+
</br>
|
|
53
|
+
<p align="center">
|
|
54
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license." />
|
|
55
|
+
<a href="https://docs.agenta.ai/">
|
|
56
|
+
<img src="https://img.shields.io/badge/Doc-online-green" alt="Doc">
|
|
57
|
+
</a>
|
|
58
|
+
|
|
59
|
+
<a href="https://github.com/Agenta-AI/agenta/blob/main/CONTRIBUTING.md">
|
|
60
|
+
<img src="https://img.shields.io/badge/PRs-Welcome-brightgreen" alt="PRs welcome" />
|
|
61
|
+
</a>
|
|
62
|
+
<img src="https://img.shields.io/github/contributors/Agenta-AI/agenta" alt="Contributors">
|
|
63
|
+
<img src="https://img.shields.io/github/last-commit/Agenta-AI/agenta" alt="Last Commit">
|
|
64
|
+
<img src="https://img.shields.io/github/commit-activity/m/agenta-ai/agenta" alt="Commits per month">
|
|
65
|
+
|
|
66
|
+
<a href="https://pypi.org/project/agenta/">
|
|
67
|
+
<img src="https://img.shields.io/pypi/dm/agenta" alt="PyPI - Downloads">
|
|
68
|
+
</a>
|
|
69
|
+
|
|
70
|
+
</br>
|
|
71
|
+
</p>
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
<p align="center">
|
|
75
|
+
<a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA">
|
|
76
|
+
<img src="https://img.shields.io/badge/JOIN US ON SLACK-4A154B?style=for-the-badge&logo=slack&logoColor=white" />
|
|
77
|
+
</a>
|
|
78
|
+
<a href="https://www.linkedin.com/company/agenta-ai/">
|
|
79
|
+
<img src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white" />
|
|
80
|
+
</a>
|
|
81
|
+
<a href="https://twitter.com/agenta_ai">
|
|
82
|
+
<img src="https://img.shields.io/twitter/follow/agenta_ai?style=social" height="28" />
|
|
83
|
+
</a>
|
|
84
|
+
</p>
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
</br>
|
|
88
|
+
|
|
89
|
+
<a href="https://cloud.agenta.ai">
|
|
90
|
+
<picture>
|
|
91
|
+
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/a3024fac-2945-4208-ae12-4cc51ecfc970" />
|
|
92
|
+
</picture>
|
|
93
|
+
</a>
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
<br>
|
|
97
|
+
<br />
|
|
98
|
+
<br />
|
|
99
|
+
<div align="center" >
|
|
100
|
+
<picture >
|
|
101
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/cf6d4713-4558-4c6c-9e1b-ee4eab261f4c" >
|
|
102
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/ae9cf11f-8ef9-4b67-98c7-4a40341fa87a" >
|
|
103
|
+
<img alt="Mockup agenta" src="https://github.com/Agenta-AI/agenta/assets/4510758/ae9cf11f-8ef9-4b67-98c7-4a40341fa87a" >
|
|
104
|
+
</picture>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
</div>
|
|
108
|
+
<br />
|
|
109
|
+
<br />
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
<h3 align="center">
|
|
114
|
+
<a href="#ℹ️-about"><b>About</b></a> •
|
|
115
|
+
<a href="#quick-start"><b>Quick Start</b></a> •
|
|
116
|
+
<a href="https://docs.agenta.ai/installation"><b>Installation</b></a> •
|
|
117
|
+
<a href="#features"><b>Features</b></a> •
|
|
118
|
+
<a href="https://docs.agenta.ai"><b>Documentation</b></a> •
|
|
119
|
+
<a href="#enterprise-support"><b>Enterprise</b></a> •
|
|
120
|
+
<a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA"><b>Community</b></a> •
|
|
121
|
+
<a href="#contributing"><b>Contributing</b></a>
|
|
122
|
+
</h3>
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
# ℹ️ About
|
|
127
|
+
|
|
128
|
+
Agenta is an end-to-end LLMOps platform. It provides the tools for **prompt engineering and management**, ⚖️ **evaluation**, and :rocket: **deployment**. All without imposing any restrictions on your choice of framework, library, or model.
|
|
129
|
+
|
|
130
|
+
Agenta allows developers and product teams to collaborate and build robust AI applications in less time.
|
|
131
|
+
|
|
132
|
+
## 🔨 How does it work?
|
|
133
|
+
|
|
134
|
+
| Using an LLM App Template (For Non-Technical Users) | Starting from Code |
|
|
135
|
+
| ------------- | ------------- |
|
|
136
|
+
|1. [Create an application using a pre-built template from our UI](https://cloud.agenta.ai?utm_source=github&utm_medium=readme&utm_campaign=github)<br />2. Access a playground where you can test and compare different prompts and configurations side-by-side.<br /> 3. Systematically evaluate your application using pre-built or custom evaluators.<br /> 4. Deploy the application to production with one click. |1. [Add a few lines to any LLM application code to automatically create a playground for it](https://docs.agenta.ai/developer_guides/tutorials/first-app-with-langchain) <br />2. Experiment with prompts and configurations, and compare them side-by-side in the playground. <br />3. Systematically evaluate your application using pre-built or custom evaluators. <br />4. Deploy the application to production with one click. |
|
|
137
|
+
|
|
138
|
+
<br /><br />
|
|
139
|
+
|
|
140
|
+
# Quick Start
|
|
141
|
+
|
|
142
|
+
### [Try the cloud version](https://cloud.agenta.ai?utm_source=github&utm_medium=readme&utm_campaign=github)
|
|
143
|
+
### [Create your first application in one-minute](https://docs.agenta.ai/getting_started/getting-started-ui)
|
|
144
|
+
### [Create an application using Langchain](https://docs.agenta.ai/developer_guides/tutorials/first-app-with-langchain)
|
|
145
|
+
### [Self-host agenta](https://docs.agenta.ai/self-host/host-locally)
|
|
146
|
+
### [Read the Documentation](https://docs.agenta.ai)
|
|
147
|
+
### [Check the Cookbook](https://docs.agenta.ai/cookbook)
|
|
148
|
+
|
|
149
|
+
# Features
|
|
150
|
+
|
|
151
|
+
<h3>Playground 🪄 <br/></h3>
|
|
152
|
+
With just a few lines of code, define the parameters and prompts you wish to experiment with. You and your team can quickly experiment and test new variants on the web UI. <br/>
|
|
153
|
+
|
|
154
|
+
https://github.com/Agenta-AI/agenta/assets/4510758/8b736d2b-7c61-414c-b534-d95efc69134c
|
|
155
|
+
|
|
156
|
+
<h3>Version Evaluation 📊 <br/></h3>
|
|
157
|
+
Define test sets, then evaluate manually or programmatically your different variants.<br/>
|
|
158
|
+
|
|
159
|
+

|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
<h3>API Deployment 🚀<br/></h3>
|
|
163
|
+
When you are ready, deploy your LLM applications as APIs in one click.<br/>
|
|
164
|
+
|
|
165
|
+

|
|
166
|
+
|
|
167
|
+
## Why choose Agenta for building LLM-apps?
|
|
168
|
+
|
|
169
|
+
- 🔨 **Build quickly**: You need to iterate many times on different architectures and prompts to bring apps to production. We streamline this process and allow you to do this in days instead of weeks.
|
|
170
|
+
- 🏗️ **Build robust apps and reduce hallucination**: We provide you with the tools to systematically and easily evaluate your application to make sure you only serve robust apps to production.
|
|
171
|
+
- 👨💻 **Developer-centric**: We cater to complex LLM-apps and pipelines that require more than one simple prompt. We allow you to experiment and iterate on apps that have complex integration, business logic, and many prompts.
|
|
172
|
+
- 🌐 **Solution-Agnostic**: You have the freedom to use any libraries and models, be it Langchain, llma_index, or a custom-written alternative.
|
|
173
|
+
- 🔒 **Privacy-First**: We respect your privacy and do not proxy your data through third-party services. The platform and the data are hosted on your infrastructure.
|
|
174
|
+
|
|
175
|
+
## How Agenta works:
|
|
176
|
+
|
|
177
|
+
**1. Write your LLM-app code**
|
|
178
|
+
|
|
179
|
+
Write the code using any framework, library, or model you want. Add the `agenta.post` decorator and put the inputs and parameters in the function call just like in this example:
|
|
180
|
+
|
|
181
|
+
_Example simple application that generates baby names:_
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
import agenta as ag
|
|
185
|
+
from langchain.chains import LLMChain
|
|
186
|
+
from langchain.llms import OpenAI
|
|
187
|
+
from langchain.prompts import PromptTemplate
|
|
188
|
+
|
|
189
|
+
default_prompt = "Give me five cool names for a baby from {country} with this gender {gender}!!!!"
|
|
190
|
+
ag.init()
|
|
191
|
+
ag.config(prompt_template=ag.TextParam(default_prompt),
|
|
192
|
+
temperature=ag.FloatParam(0.9))
|
|
193
|
+
|
|
194
|
+
@ag.entrypoint
|
|
195
|
+
def generate(
|
|
196
|
+
country: str,
|
|
197
|
+
gender: str,
|
|
198
|
+
) -> str:
|
|
199
|
+
llm = OpenAI(temperature=ag.config.temperature)
|
|
200
|
+
prompt = PromptTemplate(
|
|
201
|
+
input_variables=["country", "gender"],
|
|
202
|
+
template=ag.config.prompt_template,
|
|
203
|
+
)
|
|
204
|
+
chain = LLMChain(llm=llm, prompt=prompt)
|
|
205
|
+
output = chain.run(country=country, gender=gender)
|
|
206
|
+
|
|
207
|
+
return output
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**2.Deploy your app using the Agenta CLI**
|
|
211
|
+
|
|
212
|
+
<img width="650" alt="Screenshot 2023-06-19 at 15 58 34" src="https://github.com/Agenta-AI/agenta/assets/4510758/eede3e78-0fe1-42a0-ad4e-d880ddb10bf0">
|
|
213
|
+
|
|
214
|
+
**3. Go to agenta at http://localhost**
|
|
215
|
+
|
|
216
|
+
Now your team can 🔄 iterate, 🧪 experiment, and ⚖️ evaluate different versions of your app (with your code!) in the web platform.</summary>
|
|
217
|
+
<br/>
|
|
218
|
+
|
|
219
|
+
<img width="900" alt="Screenshot 2023-06-25 at 21 08 53" src="https://github.com/Agenta-AI/agenta/assets/57623556/7e07a988-a36a-4fb5-99dd-9cc13a678434">
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
# Enterprise Support
|
|
223
|
+
Contact us here for enterprise support and early access to agenta self-managed enterprise with Kubernetes support. <br/><br/>
|
|
224
|
+
<a href="https://cal.com/mahmoud-mabrouk-ogzgey/demo"><img src="https://cal.com/book-with-cal-dark.svg" alt="Book us"></a>
|
|
225
|
+
|
|
226
|
+
# Disabling Anonymized Tracking
|
|
227
|
+
|
|
228
|
+
To disable anonymized telemetry, set the following environment variable:
|
|
229
|
+
|
|
230
|
+
- For web: Set `TELEMETRY_TRACKING_ENABLED` to `false` in your `agenta-web/.env` file.
|
|
231
|
+
- For CLI: Set `telemetry_tracking_enabled` to `false` in your `~/.agenta/config.toml` file.
|
|
232
|
+
|
|
233
|
+
After making this change, restart agenta compose.
|
|
234
|
+
|
|
235
|
+
# Contributing
|
|
236
|
+
|
|
237
|
+
We warmly welcome contributions to Agenta. Feel free to submit issues, fork the repository, and send pull requests.
|
|
238
|
+
|
|
239
|
+
We are usually hanging in our Slack. Feel free to [join our Slack and ask us anything](https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA)
|
|
240
|
+
|
|
241
|
+
Check out our [Contributing Guide](https://docs.agenta.ai/contributing/getting-started) for more information.
|
|
242
|
+
|
|
243
|
+
## Contributors ✨
|
|
244
|
+
|
|
245
|
+
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
246
|
+
[](#contributors-)
|
|
247
|
+
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
248
|
+
|
|
249
|
+
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
250
|
+
|
|
251
|
+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
252
|
+
<!-- prettier-ignore-start -->
|
|
253
|
+
<!-- markdownlint-disable -->
|
|
254
|
+
<table>
|
|
255
|
+
<tbody>
|
|
256
|
+
<tr>
|
|
257
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SamMethnani"><img src="https://avatars.githubusercontent.com/u/57623556?v=4?s=100" width="100px;" alt="Sameh Methnani"/><br /><sub><b>Sameh Methnani</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=SamMethnani" title="Code">💻</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=SamMethnani" title="Documentation">📖</a></td>
|
|
258
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/suadsuljovic"><img src="https://avatars.githubusercontent.com/u/8658374?v=4?s=100" width="100px;" alt="Suad Suljovic"/><br /><sub><b>Suad Suljovic</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=suadsuljovic" title="Code">💻</a> <a href="#design-suadsuljovic" title="Design">🎨</a> <a href="#mentoring-suadsuljovic" title="Mentoring">🧑🏫</a> <a href="https://github.com/Agenta-AI/agenta/pulls?q=is%3Apr+reviewed-by%3Asuadsuljovic" title="Reviewed Pull Requests">👀</a></td>
|
|
259
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/burtenshaw"><img src="https://avatars.githubusercontent.com/u/19620375?v=4?s=100" width="100px;" alt="burtenshaw"/><br /><sub><b>burtenshaw</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=burtenshaw" title="Code">💻</a></td>
|
|
260
|
+
<td align="center" valign="top" width="14.28%"><a href="http://abram.tech"><img src="https://avatars.githubusercontent.com/u/55067204?v=4?s=100" width="100px;" alt="Abram"/><br /><sub><b>Abram</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=aybruhm" title="Code">💻</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=aybruhm" title="Documentation">📖</a></td>
|
|
261
|
+
<td align="center" valign="top" width="14.28%"><a href="http://israelabebe.com"><img src="https://avatars.githubusercontent.com/u/7479824?v=4?s=100" width="100px;" alt="Israel Abebe"/><br /><sub><b>Israel Abebe</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Avernu" title="Bug reports">🐛</a> <a href="#design-vernu" title="Design">🎨</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=vernu" title="Code">💻</a></td>
|
|
262
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SohaibAnwaar"><img src="https://avatars.githubusercontent.com/u/29427728?v=4?s=100" width="100px;" alt="Master X"/><br /><sub><b>Master X</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=SohaibAnwaar" title="Code">💻</a></td>
|
|
263
|
+
<td align="center" valign="top" width="14.28%"><a href="https://main-portfolio-26wv6oglp-witehound.vercel.app/"><img src="https://avatars.githubusercontent.com/u/26417477?v=4?s=100" width="100px;" alt="corinthian"/><br /><sub><b>corinthian</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=witehound" title="Code">💻</a> <a href="#design-witehound" title="Design">🎨</a></td>
|
|
264
|
+
</tr>
|
|
265
|
+
<tr>
|
|
266
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pajko97"><img src="https://avatars.githubusercontent.com/u/25198892?v=4?s=100" width="100px;" alt="Pavle Janjusevic"/><br /><sub><b>Pavle Janjusevic</b></sub></a><br /><a href="#infra-Pajko97" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
267
|
+
<td align="center" valign="top" width="14.28%"><a href="http://kaosiso-ezealigo.netlify.app"><img src="https://avatars.githubusercontent.com/u/99529776?v=4?s=100" width="100px;" alt="Kaosi Ezealigo"/><br /><sub><b>Kaosi Ezealigo</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Abekossy" title="Bug reports">🐛</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=bekossy" title="Code">💻</a></td>
|
|
268
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/albnunes"><img src="https://avatars.githubusercontent.com/u/46302915?v=4?s=100" width="100px;" alt="Alberto Nunes"/><br /><sub><b>Alberto Nunes</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/issues?q=author%3Aalbnunes" title="Bug reports">🐛</a></td>
|
|
269
|
+
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/mohammed-maaz-6290b0116/"><img src="https://avatars.githubusercontent.com/u/17180132?v=4?s=100" width="100px;" alt="Maaz Bin Khawar"/><br /><sub><b>Maaz Bin Khawar</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=MohammedMaaz" title="Code">💻</a> <a href="https://github.com/Agenta-AI/agenta/pulls?q=is%3Apr+reviewed-by%3AMohammedMaaz" title="Reviewed Pull Requests">👀</a> <a href="#mentoring-MohammedMaaz" title="Mentoring">🧑🏫</a></td>
|
|
270
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/devgenix"><img src="https://avatars.githubusercontent.com/u/56418363?v=4?s=100" width="100px;" alt="Nehemiah Onyekachukwu Emmanuel"/><br /><sub><b>Nehemiah Onyekachukwu Emmanuel</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=devgenix" title="Code">💻</a> <a href="#example-devgenix" title="Examples">💡</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=devgenix" title="Documentation">📖</a></td>
|
|
271
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/philipokiokio"><img src="https://avatars.githubusercontent.com/u/55271518?v=4?s=100" width="100px;" alt="Philip Okiokio"/><br /><sub><b>Philip Okiokio</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=philipokiokio" title="Documentation">📖</a></td>
|
|
272
|
+
<td align="center" valign="top" width="14.28%"><a href="https://sweetdevil144.github.io/My-Website/"><img src="https://avatars.githubusercontent.com/u/117591942?v=4?s=100" width="100px;" alt="Abhinav Pandey"/><br /><sub><b>Abhinav Pandey</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=Sweetdevil144" title="Code">💻</a></td>
|
|
273
|
+
</tr>
|
|
274
|
+
<tr>
|
|
275
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RamchandraWarang9822"><img src="https://avatars.githubusercontent.com/u/92023869?v=4?s=100" width="100px;" alt="Ramchandra Warang"/><br /><sub><b>Ramchandra Warang</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=RamchandraWarang9822" title="Code">💻</a> <a href="https://github.com/Agenta-AI/agenta/issues?q=author%3ARamchandraWarang9822" title="Bug reports">🐛</a></td>
|
|
276
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lazyfuhrer"><img src="https://avatars.githubusercontent.com/u/64888892?v=4?s=100" width="100px;" alt="Biswarghya Biswas"/><br /><sub><b>Biswarghya Biswas</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=lazyfuhrer" title="Code">💻</a></td>
|
|
277
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/okieLoki"><img src="https://avatars.githubusercontent.com/u/96105929?v=4?s=100" width="100px;" alt="Uddeepta Raaj Kashyap"/><br /><sub><b>Uddeepta Raaj Kashyap</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=okieLoki" title="Code">💻</a></td>
|
|
278
|
+
<td align="center" valign="top" width="14.28%"><a href="http://www.linkedin.com/in/nayeem-abdullah-317098141"><img src="https://avatars.githubusercontent.com/u/32274108?v=4?s=100" width="100px;" alt="Nayeem Abdullah"/><br /><sub><b>Nayeem Abdullah</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=nayeem01" title="Code">💻</a></td>
|
|
279
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kangsuhyun-yanolja"><img src="https://avatars.githubusercontent.com/u/124246127?v=4?s=100" width="100px;" alt="Kang Suhyun"/><br /><sub><b>Kang Suhyun</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=kangsuhyun-yanolja" title="Code">💻</a></td>
|
|
280
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yeokyeong-yanolja"><img src="https://avatars.githubusercontent.com/u/128676129?v=4?s=100" width="100px;" alt="Yoon"/><br /><sub><b>Yoon</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=yeokyeong-yanolja" title="Code">💻</a></td>
|
|
281
|
+
<td align="center" valign="top" width="14.28%"><a href="https://mrkirthi24.netlify.app/"><img src="https://avatars.githubusercontent.com/u/53830546?v=4?s=100" width="100px;" alt="Kirthi Bagrecha Jain"/><br /><sub><b>Kirthi Bagrecha Jain</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=mrkirthi-24" title="Code">💻</a></td>
|
|
282
|
+
</tr>
|
|
283
|
+
<tr>
|
|
284
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/navdeep1840"><img src="https://avatars.githubusercontent.com/u/80774259?v=4?s=100" width="100px;" alt="Navdeep"/><br /><sub><b>Navdeep</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=navdeep1840" title="Code">💻</a></td>
|
|
285
|
+
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/rhythm-sharma-708a421a8/"><img src="https://avatars.githubusercontent.com/u/64489317?v=4?s=100" width="100px;" alt="Rhythm Sharma"/><br /><sub><b>Rhythm Sharma</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=Rhythm-08" title="Code">💻</a></td>
|
|
286
|
+
<td align="center" valign="top" width="14.28%"><a href="https://osinachi.me"><img src="https://avatars.githubusercontent.com/u/40396070?v=4?s=100" width="100px;" alt="Osinachi Chukwujama "/><br /><sub><b>Osinachi Chukwujama </b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=vicradon" title="Code">💻</a></td>
|
|
287
|
+
<td align="center" valign="top" width="14.28%"><a href="https://liduos.com/"><img src="https://avatars.githubusercontent.com/u/47264881?v=4?s=100" width="100px;" alt="莫尔索"/><br /><sub><b>莫尔索</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=morsoli" title="Documentation">📖</a></td>
|
|
288
|
+
<td align="center" valign="top" width="14.28%"><a href="http://luccithedev.com"><img src="https://avatars.githubusercontent.com/u/22600781?v=4?s=100" width="100px;" alt="Agunbiade Adedeji"/><br /><sub><b>Agunbiade Adedeji</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=dejongbaba" title="Code">💻</a></td>
|
|
289
|
+
<td align="center" valign="top" width="14.28%"><a href="https://techemmy.github.io/"><img src="https://avatars.githubusercontent.com/u/43725109?v=4?s=100" width="100px;" alt="Emmanuel Oloyede"/><br /><sub><b>Emmanuel Oloyede</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=techemmy" title="Code">💻</a> <a href="https://github.com/Agenta-AI/agenta/commits?author=techemmy" title="Documentation">📖</a></td>
|
|
290
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dhaneshwarguiyan"><img src="https://avatars.githubusercontent.com/u/116065351?v=4?s=100" width="100px;" alt="Dhaneshwarguiyan"/><br /><sub><b>Dhaneshwarguiyan</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=Dhaneshwarguiyan" title="Code">💻</a></td>
|
|
291
|
+
</tr>
|
|
292
|
+
<tr>
|
|
293
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/PentesterPriyanshu"><img src="https://avatars.githubusercontent.com/u/98478305?v=4?s=100" width="100px;" alt="Priyanshu Prajapati"/><br /><sub><b>Priyanshu Prajapati</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=PentesterPriyanshu" title="Documentation">📖</a></td>
|
|
294
|
+
<td align="center" valign="top" width="14.28%"><a href="https://venkataravitejagullapudi.github.io/"><img src="https://avatars.githubusercontent.com/u/70102577?v=4?s=100" width="100px;" alt="Raviteja"/><br /><sub><b>Raviteja</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=VenkataRavitejaGullapudi" title="Code">💻</a></td>
|
|
295
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ArijitCloud"><img src="https://avatars.githubusercontent.com/u/81144422?v=4?s=100" width="100px;" alt="Arijit"/><br /><sub><b>Arijit</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=ArijitCloud" title="Code">💻</a></td>
|
|
296
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Yachika9925"><img src="https://avatars.githubusercontent.com/u/147185379?v=4?s=100" width="100px;" alt="Yachika9925"/><br /><sub><b>Yachika9925</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=Yachika9925" title="Documentation">📖</a></td>
|
|
297
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dhoni77"><img src="https://avatars.githubusercontent.com/u/53973174?v=4?s=100" width="100px;" alt="Aldrin"/><br /><sub><b>Aldrin</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=Dhoni77" title="Tests">⚠️</a></td>
|
|
298
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/seungduk-yanolja"><img src="https://avatars.githubusercontent.com/u/115020208?v=4?s=100" width="100px;" alt="seungduk.kim.2304"/><br /><sub><b>seungduk.kim.2304</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=seungduk-yanolja" title="Code">💻</a></td>
|
|
299
|
+
<td align="center" valign="top" width="14.28%"><a href="https://dandrei.com/"><img src="https://avatars.githubusercontent.com/u/59015981?v=4?s=100" width="100px;" alt="Andrei Dragomir"/><br /><sub><b>Andrei Dragomir</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=andreiwebdev" title="Code">💻</a></td>
|
|
300
|
+
</tr>
|
|
301
|
+
<tr>
|
|
302
|
+
<td align="center" valign="top" width="14.28%"><a href="https://diegolikescode.me/"><img src="https://avatars.githubusercontent.com/u/57499868?v=4?s=100" width="100px;" alt="diego"/><br /><sub><b>diego</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=diegolikescode" title="Code">💻</a></td>
|
|
303
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brockWith"><img src="https://avatars.githubusercontent.com/u/105627491?v=4?s=100" width="100px;" alt="brockWith"/><br /><sub><b>brockWith</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=brockWith" title="Code">💻</a></td>
|
|
304
|
+
<td align="center" valign="top" width="14.28%"><a href="http://denniszelada.wordpress.com/"><img src="https://avatars.githubusercontent.com/u/219311?v=4?s=100" width="100px;" alt="Dennis Zelada"/><br /><sub><b>Dennis Zelada</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=denniszelada" title="Code">💻</a></td>
|
|
305
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/romainrbr"><img src="https://avatars.githubusercontent.com/u/10381609?v=4?s=100" width="100px;" alt="Romain Brucker"/><br /><sub><b>Romain Brucker</b></sub></a><br /><a href="https://github.com/Agenta-AI/agenta/commits?author=romainrbr" title="Code">💻</a></td>
|
|
306
|
+
</tr>
|
|
307
|
+
</tbody>
|
|
308
|
+
</table>
|
|
309
|
+
|
|
310
|
+
<!-- markdownlint-restore -->
|
|
311
|
+
<!-- prettier-ignore-end -->
|
|
312
|
+
|
|
313
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
314
|
+
|
|
315
|
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!
|
|
316
|
+
|
|
317
|
+
**Attribution**: Testing icons created by [Freepik - Flaticon](https://www.flaticon.com/free-icons/testing)
|
|
318
|
+
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
agenta/__init__.py,sha256
|
|
1
|
+
agenta/__init__.py,sha256=Sg_4PW8MM-r9p96FeqTdu1h7fcQzN4nF7KPuQD7lgIc,493
|
|
2
2
|
agenta/cli/helper.py,sha256=X_0GtjugLQiM_f53_l3AF3uPS8if96ejTh2nThYqLuE,6199
|
|
3
3
|
agenta/cli/main.py,sha256=ekamhB0q6OcXSVDKl0OAKhFejgm0StsFoOouU-hvmUg,7508
|
|
4
|
-
agenta/cli/telemetry.py,sha256=
|
|
5
|
-
agenta/cli/variant_commands.py,sha256=
|
|
4
|
+
agenta/cli/telemetry.py,sha256=GaFFRsE_NtrcSSJ10r2jhgFs5Sk8gf2C09Ox3gOr3eU,1317
|
|
5
|
+
agenta/cli/variant_commands.py,sha256=n4LZoRy_IbPvlPlP8HbDpxb3wXrUXLe5OJi3b3_QPZE,17004
|
|
6
6
|
agenta/cli/variant_configs.py,sha256=PLiuMKadVzs6Gi2uYaT0pZzyULNHDXaTMDWboqpwWdU,1293
|
|
7
7
|
agenta/client/Readme.md,sha256=zWJ6VMYCG124op5RcqgWBdJdlGkGQ2rPLk9F32rWvqo,2756
|
|
8
8
|
agenta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -64,7 +64,7 @@ agenta/client/backend/types/validation_error_loc_item.py,sha256=LAtjCHIllWRBFXvA
|
|
|
64
64
|
agenta/client/backend/types/variant_action.py,sha256=38SadKvaBM9gNwoTD9AHxfdnWR3_syxRY9B1LEEvX5E,1031
|
|
65
65
|
agenta/client/backend/types/variant_action_enum.py,sha256=wFQ74LoXocZkIMok5iTN7ztd7ikh51dZEeedjBm23A8,511
|
|
66
66
|
agenta/client/exceptions.py,sha256=cxLjjKvZKlUgBxt4Vn9J_SsezJPPNHvrZxnoq-D6zmw,94
|
|
67
|
-
agenta/config.py,sha256=
|
|
67
|
+
agenta/config.py,sha256=Id-Ie1yf9QRP1YPhRYaYSOruRe6RBrsCXkG9rAa-ZtA,732
|
|
68
68
|
agenta/config.toml,sha256=ptE0P49bwsu3Luyn7OLFmk2buPhj5D-MA-O_ErOGoLg,223
|
|
69
69
|
agenta/docker/docker-assets/Dockerfile.cloud.template,sha256=CwJbCTezOYCGowA-Hh19f85YXgynT89CrWxjNxLJJfg,317
|
|
70
70
|
agenta/docker/docker-assets/Dockerfile.template,sha256=KMQOmJ0F9zBY-1d5d4FZYIOnoTFGAJgqUwsAnIpDVak,285
|
|
@@ -73,13 +73,14 @@ agenta/docker/docker-assets/entrypoint.sh,sha256=29XK8VQjQsx4hN2j-4JDy-6kQb5y4LC
|
|
|
73
73
|
agenta/docker/docker-assets/lambda_function.py,sha256=h4UZSSfqwpfsCgERv6frqwm_4JrYu9rLz3I-LxCfeEg,83
|
|
74
74
|
agenta/docker/docker-assets/main.py,sha256=BbmbFByRQ8MzL8402pJryEF34t6ba1i_JrMtWMAQDQ4,327
|
|
75
75
|
agenta/docker/docker_utils.py,sha256=oK51dmJLUXcR0iEi3knDqt5BZxF3somqWHVOpTQ8rOI,5681
|
|
76
|
-
agenta/sdk/__init__.py,sha256=
|
|
77
|
-
agenta/sdk/agenta_decorator.py,sha256=
|
|
78
|
-
agenta/sdk/agenta_init.py,sha256=
|
|
76
|
+
agenta/sdk/__init__.py,sha256=TUTEndClnM2SKeQsC7Swv_K3uWkBZTd7jYKvp2-tQeY,565
|
|
77
|
+
agenta/sdk/agenta_decorator.py,sha256=8U3_AFg25CGKWTOt0T-DTMVXAigt2d07fDTTJYmDddw,15345
|
|
78
|
+
agenta/sdk/agenta_init.py,sha256=NdXNUlfabALJINJlZr5oXFt4XwMeAomp83YImdTZ_KU,7792
|
|
79
79
|
agenta/sdk/context.py,sha256=q-PxL05-I84puunUAs9LGsffEXcYhDxhQxjuOz2vK90,901
|
|
80
80
|
agenta/sdk/router.py,sha256=0sbajvn5C7t18anH6yNo7-oYxldHnYfwcbmQnIXBePw,269
|
|
81
|
-
agenta/sdk/types.py,sha256=
|
|
81
|
+
agenta/sdk/types.py,sha256=GiUiXDkbM2pMx1-mldzQT8uDUcm9sRqVUytThEkbjj4,4658
|
|
82
82
|
agenta/sdk/utils/globals.py,sha256=lpgflY8xovZJtHfJf41dbNCZGwx07YNkG9ldruv6xoI,360
|
|
83
|
+
agenta/sdk/utils/helper/openai_cost.py,sha256=1VkgvucDnNZm1pTfcVLz9icWunntp1d7zwMmnviy3Uw,5877
|
|
83
84
|
agenta/sdk/utils/preinit.py,sha256=YlJL7RLfel0R7DFp-jK7OV-z4ZIQJM0oupYlk7g8b5o,1278
|
|
84
85
|
agenta/templates/compose_email/README.md,sha256=ss7vZPpI1Hg0VmYtFliwq_r5LnqbCy_S5OQDXg8UoIA,308
|
|
85
86
|
agenta/templates/compose_email/app.py,sha256=SG8QnBkC49MtvWa2z5_YQ2d8wxZxhO_hWs15j3CsWvc,2384
|
|
@@ -96,7 +97,7 @@ agenta/templates/simple_prompt/app.py,sha256=kODgF6lhzsaJPdgL5b21bUki6jkvqjWZzWR
|
|
|
96
97
|
agenta/templates/simple_prompt/env.example,sha256=g9AE5bYcGPpxawXMJ96gh8oenEPCHTabsiOnfQo3c5k,70
|
|
97
98
|
agenta/templates/simple_prompt/requirements.txt,sha256=ywRglRy7pPkw8bljmMEJJ4aOOQKrt9FGKULZ-DGkoBU,23
|
|
98
99
|
agenta/templates/simple_prompt/template.toml,sha256=DQBtRrF4GU8LBEXOZ-GGuINXMQDKGTEG5y37tnvIUIE,60
|
|
99
|
-
agenta-0.
|
|
100
|
-
agenta-0.
|
|
101
|
-
agenta-0.
|
|
102
|
-
agenta-0.
|
|
100
|
+
agenta-0.7.1.dist-info/METADATA,sha256=jelr1fcelHrzTCbbqEWY5KwOmQ1IdLc_s47g4cNNCC0,27295
|
|
101
|
+
agenta-0.7.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
102
|
+
agenta-0.7.1.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
|
|
103
|
+
agenta-0.7.1.dist-info/RECORD,,
|
agenta-0.6.10.dist-info/METADATA
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: agenta
|
|
3
|
-
Version: 0.6.10
|
|
4
|
-
Summary: The SDK for agenta is an open-source LLMOps platform.
|
|
5
|
-
Home-page: https://agenta.ai
|
|
6
|
-
Keywords: LLMOps,LLM,evaluation,prompt engineering
|
|
7
|
-
Author: Mahmoud Mabrouk
|
|
8
|
-
Author-email: mahmoud@agenta.ai
|
|
9
|
-
Requires-Python: >=3.9,<4.0
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
18
|
-
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
19
|
-
Requires-Dist: docker (>=6.1.1,<7.0.0)
|
|
20
|
-
Requires-Dist: fastapi (>=0.95.1)
|
|
21
|
-
Requires-Dist: importlib-metadata (>=6.7.0,<7.0.0)
|
|
22
|
-
Requires-Dist: ipdb (>=0.13)
|
|
23
|
-
Requires-Dist: posthog (>=3.1.0,<4.0.0)
|
|
24
|
-
Requires-Dist: pydantic (>=2.0)
|
|
25
|
-
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
26
|
-
Requires-Dist: python-multipart (>=0.0.6,<0.0.7)
|
|
27
|
-
Requires-Dist: questionary (>=1.10.0,<2.0.0)
|
|
28
|
-
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
|
29
|
-
Project-URL: Documentation, https://docs.agenta.ai
|
|
30
|
-
Project-URL: Repository, https://github.com/agenta-ai/agenta
|
|
31
|
-
Description-Content-Type: text/markdown
|
|
32
|
-
|
|
33
|
-
<div align="center" style="margin: 30px">
|
|
34
|
-
<a href="https://agenta.ai/">
|
|
35
|
-
<div align="center" >
|
|
36
|
-
<picture >
|
|
37
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/a356f263-6f5e-43df-8b58-4c183b8d8878" >
|
|
38
|
-
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/68e055d4-d7b8-4943-992f-761558c64253" >
|
|
39
|
-
<img alt="Shows the logo of agenta" src="https://github.com/Agenta-AI/agenta/assets/4510758/68e055d4-d7b8-4943-992f-761558c64253" >
|
|
40
|
-
</picture>
|
|
41
|
-
</div>
|
|
42
|
-
</a>
|
|
43
|
-
<h4 align="center">
|
|
44
|
-
<a href="https://agenta.ai">Home Page</a> |
|
|
45
|
-
<a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA">Slack</a> |
|
|
46
|
-
<a href="https://docs.agenta.ai/">Documentation</a>
|
|
47
|
-
</h4>
|
|
48
|
-
<div align="center">
|
|
49
|
-
<strong>Quickly iterate, debug, and evaluate your LLM apps</strong><br />
|
|
50
|
-
The open-source LLMOps platform for prompt-engineering, evaluation, and deployment of complex LLM apps.
|
|
51
|
-
</div>
|
|
52
|
-
</br>
|
|
53
|
-
<p align="center">
|
|
54
|
-
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license." />
|
|
55
|
-
<a href="https://github.com/Agenta-AI/agenta/blob/main/CONTRIBUTING.md">
|
|
56
|
-
<img src="https://img.shields.io/badge/PRs-Welcome-brightgreen" alt="PRs welcome" />
|
|
57
|
-
</a>
|
|
58
|
-
<img src="https://img.shields.io/github/contributors/Agenta-AI/agenta" alt="Contributors">
|
|
59
|
-
<img src="https://img.shields.io/github/last-commit/Agenta-AI/agenta" alt="Last Commit">
|
|
60
|
-
<img src="https://img.shields.io/github/commit-activity/m/agenta-ai/agenta" alt="Commits per month">
|
|
61
|
-
</br>
|
|
62
|
-
</p>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<p align="center">
|
|
67
|
-
<a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA">
|
|
68
|
-
<img src="https://img.shields.io/badge/JOIN US ON SLACK-4A154B?style=for-the-badge&logo=slack&logoColor=white" />
|
|
69
|
-
</a>
|
|
70
|
-
<a href="https://www.linkedin.com/company/agenta-ai/">
|
|
71
|
-
<img src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white" />
|
|
72
|
-
</a>
|
|
73
|
-
<a href="https://twitter.com/agenta_ai">
|
|
74
|
-
<img src="https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" />
|
|
75
|
-
</a>
|
|
76
|
-
</p>
|
|
77
|
-
</br>
|
|
78
|
-
|
|
79
|
-
<a href="https://demo.agenta.ai">
|
|
80
|
-
<picture>
|
|
81
|
-
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/a3024fac-2945-4208-ae12-4cc51ecfc970" />
|
|
82
|
-
</picture>
|
|
83
|
-
</a>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
<br>
|
|
87
|
-
<br />
|
|
88
|
-
<br />
|
|
89
|
-
<div align="center" >
|
|
90
|
-
<picture >
|
|
91
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/cf6d4713-4558-4c6c-9e1b-ee4eab261f4c" >
|
|
92
|
-
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/ae9cf11f-8ef9-4b67-98c7-4a40341fa87a" >
|
|
93
|
-
<img alt="Mockup agenta" src="https://github.com/Agenta-AI/agenta/assets/4510758/ae9cf11f-8ef9-4b67-98c7-4a40341fa87a" >
|
|
94
|
-
</picture>
|
|
95
|
-
</div>
|
|
96
|
-
|
|
97
|
-
</div>
|
|
98
|
-
<br />
|
|
99
|
-
<br />
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
<h3 align="center">
|
|
104
|
-
<a href="#ℹ️-about"><b>About</b></a> •
|
|
105
|
-
<a href="#demo"><b>Demo</b></a> •
|
|
106
|
-
<a href="#quick-start"><b>Quick Start</b></a> •
|
|
107
|
-
<a href="https://docs.agenta.ai/installation"><b>Installation</b></a> •
|
|
108
|
-
<a href="#features"><b>Features</b></a> •
|
|
109
|
-
<a href="https://docs.agenta.ai"><b>Documentation</b></a> •
|
|
110
|
-
<a href="#support"><b>Support</b></a> •
|
|
111
|
-
<a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-1zsafop5i-Y7~ZySbhRZvKVPV5DO_7IA"><b>Community</b></a> •
|
|
112
|
-
<a href="#contributing"><b>Contributing</b></a>
|
|
113
|
-
</h3>
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
# ℹ️ About
|
|
118
|
-
|
|
119
|
-
Building production-ready LLM-powered applications is currently very difficult. It involves countless iterations of prompt engineering, parameter tuning, and architectures.
|
|
120
|
-
|
|
121
|
-
Agenta provides you with the tools to quickly do prompt engineering and 🧪 **experiment**, ⚖️ **evaluate**, and :rocket: **deploy** your LLM apps. All without imposing any restrictions on your choice of framework, library, or model.
|
|
122
|
-
<br /><br />
|
|
123
|
-
<div align="center" >
|
|
124
|
-
<picture >
|
|
125
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/01edf2af-2cef-44d7-bdec-7b033cae39cf" >
|
|
126
|
-
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Agenta-AI/agenta/assets/4510758/1d6c9627-8b7d-4357-b79f-aa9fced63772" >
|
|
127
|
-
<img alt="Overview agenta" src="https://github.com/Agenta-AI/agenta/assets/4510758/1d6c9627-8b7d-4357-b79f-aa9fced63772" >
|
|
128
|
-
</picture>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
# Demo
|
|
133
|
-
https://github.com/Agenta-AI/agenta/assets/57623556/99733147-2b78-4b95-852f-67475e4ce9ed
|
|
134
|
-
|
|
135
|
-
# Quick Start
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
<div align="center" >
|
|
139
|
-
<a href="https://demo.agenta.ai">
|
|
140
|
-
<picture>
|
|
141
|
-
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/a3024fac-2945-4208-ae12-4cc51ecfc970" />
|
|
142
|
-
</picture>
|
|
143
|
-
</a>
|
|
144
|
-
</br>
|
|
145
|
-
<a href="https://docs.agenta.ai/installation">
|
|
146
|
-
<picture>
|
|
147
|
-
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/29f3fc9a-8a7c-4b39-81a8-776a472a2baf" />
|
|
148
|
-
</picture>
|
|
149
|
-
</a>
|
|
150
|
-
<a href="https://docs.agenta.ai/getting-started">
|
|
151
|
-
<picture>
|
|
152
|
-
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/18decb9c-eba5-4d2f-9735-048a1e9d9386" />
|
|
153
|
-
</picture>
|
|
154
|
-
</a>
|
|
155
|
-
<a href="https://docs.agenta.ai/tutorials">
|
|
156
|
-
<picture>
|
|
157
|
-
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/e665d66d-d0fe-4b0a-ae7b-5e08350e5e6c" />
|
|
158
|
-
</picture>
|
|
159
|
-
</a>
|
|
160
|
-
<a href="https://docs.agenta.ai/installation/self-hosting/self-hosted-installation#aws">
|
|
161
|
-
<picture>
|
|
162
|
-
<img src="https://github.com/Agenta-AI/agenta/assets/4510758/65c1487e-5233-4509-8e8d-d967235ccfd7" />
|
|
163
|
-
</picture>
|
|
164
|
-
</a>
|
|
165
|
-
|
|
166
|
-
</div>
|
|
167
|
-
|
|
168
|
-
# Features
|
|
169
|
-
|
|
170
|
-
<h3>Playground 🪄 <br/></h3>
|
|
171
|
-
With just a few lines of code, define the parameters and prompts you wish to experiment with. You and your team can quickly experiment and test new variants on the web UI. <br/>
|
|
172
|
-
|
|
173
|
-
https://github.com/Agenta-AI/agenta/assets/4510758/8b736d2b-7c61-414c-b534-d95efc69134c
|
|
174
|
-
|
|
175
|
-
<h3>Version Evaluation 📊 <br/></h3>
|
|
176
|
-
Define test sets, the evaluate manually or programmatically your different variants.<br/>
|
|
177
|
-
|
|
178
|
-

|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
<h3>API Deployment 🚀<br/></h3>
|
|
182
|
-
When you are ready, deploy your LLM applications as APIs in one click.<br/>
|
|
183
|
-
|
|
184
|
-

|
|
185
|
-
|
|
186
|
-
## Why choose Agenta for building LLM-apps?
|
|
187
|
-
|
|
188
|
-
- 🔨 **Build quickly**: You need to iterate many times on different architectures and prompts to bring apps to production. We streamline this process and allow you to do this in days instead of weeks.
|
|
189
|
-
- 🏗️ **Build robust apps and reduce hallucination**: We provide you with the tools to systematically and easily evaluate your application to make sure you only serve robust apps to production
|
|
190
|
-
- 👨💻 **Developer-centric**: We cater to complex LLM-apps and pipelines that require more than one simple prompt. We allow you to experiment and iterate on apps that have complex integration, business logic, and many prompts.
|
|
191
|
-
- 🌐 **Solution-Agnostic**: You have the freedom to use any library and models, be it Langchain, llma_index, or a custom-written alternative.
|
|
192
|
-
- 🔒 **Privacy-First**: We respect your privacy and do not proxy your data through third-party services. The platform and the data are hosted on your infrastructure.
|
|
193
|
-
|
|
194
|
-
## How Agenta works:
|
|
195
|
-
|
|
196
|
-
**1. Write your LLM-app code**
|
|
197
|
-
|
|
198
|
-
Write the code using any framework, library, or model you want. Add the `agenta.post` decorator and put the inputs and parameters in the function call just like in this example:
|
|
199
|
-
|
|
200
|
-
_Example simple application that generates baby names_
|
|
201
|
-
|
|
202
|
-
```python
|
|
203
|
-
import agenta as ag
|
|
204
|
-
from langchain.chains import LLMChain
|
|
205
|
-
from langchain.llms import OpenAI
|
|
206
|
-
from langchain.prompts import PromptTemplate
|
|
207
|
-
|
|
208
|
-
default_prompt = "Give me five cool names for a baby from {country} with this gender {gender}!!!!"
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
@ag.post
|
|
212
|
-
def generate(
|
|
213
|
-
country: str,
|
|
214
|
-
gender: str,
|
|
215
|
-
temperature: ag.FloatParam = 0.9,
|
|
216
|
-
prompt_template: ag.TextParam = default_prompt,
|
|
217
|
-
) -> str:
|
|
218
|
-
llm = OpenAI(temperature=temperature)
|
|
219
|
-
prompt = PromptTemplate(
|
|
220
|
-
input_variables=["country", "gender"],
|
|
221
|
-
template=prompt_template,
|
|
222
|
-
)
|
|
223
|
-
chain = LLMChain(llm=llm, prompt=prompt)
|
|
224
|
-
output = chain.run(country=country, gender=gender)
|
|
225
|
-
|
|
226
|
-
return output
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
**2.Deploy your app using the Agenta CLI.**
|
|
230
|
-
|
|
231
|
-
<img width="650" alt="Screenshot 2023-06-19 at 15 58 34" src="https://github.com/Agenta-AI/agenta/assets/4510758/eede3e78-0fe1-42a0-ad4e-d880ddb10bf0">
|
|
232
|
-
|
|
233
|
-
**3. Go to agenta at http://localhost**
|
|
234
|
-
|
|
235
|
-
Now your team can 🔄 iterate, 🧪 experiment, and ⚖️ evaluate different versions of your app (with your code!) in the web platform.</summary>
|
|
236
|
-
<br/>
|
|
237
|
-
|
|
238
|
-
<img width="900" alt="Screenshot 2023-06-25 at 21 08 53" src="https://github.com/Agenta-AI/agenta/assets/57623556/7e07a988-a36a-4fb5-99dd-9cc13a678434">
|
|
239
|
-
|
|
240
|
-
|
|
File without changes
|
|
File without changes
|