Summary
The user is inquiring about the propeller framework's ability to communicate with multiple agent endpoints while managing a custom agent in a decoupled manner. They provide a configuration example with a defaultAgent
and a custom_agent
on different ports and seek clarification on configuring multiple custom agents. The user confirms the framework's production suitability and notes that requests for a custom_task
will go to the custom_agent
. They also ask about configuring a sensor agent
, mentioning that packaging the custom_agent
on port 8001 should support the custom_sensor
type, and they provide a proposed configuration. The user emphasizes the importance of the agent-service recognizing all supported task types for compatibility with supportedTaskTypes
from flytekit. They express gratitude for the confirmation, which helps them resolve uncertainties before packaging and deploying their custom agent separately.
eric901201
it's unrelavant
eric901201
don't copy the click_types.py
eric901201
do it
eric901201
not it doesnt have
shuliang
<@U05FFAF4FC2> does https://github.com/flyteorg/flytekit/pull/2619 have other dependencies? Can it be upgraded standalone?
eric901201
Check this one
eric901201
eric901201
It’s related to my pr about flyteschema
eric901201
This is fixed by me and ketan
eric901201
Yes I know this error
shuliang
the custom sensor has the error:
{"asctime": "2024-10-10 08:05:36,444", "name": "flytekit", "levelname": "ERROR", "message": "failed to create dssensor task with error `np.string_` was removed in the NumPy 2.0 release. Use `np.bytes_` instead.."}
eric901201
please update both
eric901201
flyte: 1.13 flytekit: there
eric901201
agent watcher
eric901201
and flyte
shuliang
The change you have fixed is here: https://github.com/flyteorg/flytekit/pull/2012?
shuliang
cc <@U05HLV2URT5> <@U04FZQ8U3C7> ^^
eric901201
I'll help him or she make the upgrade of agent success
eric901201
tell the person or team in charge of upgrade flytekit and flyte contact me
eric901201
this is the version
eric901201
flyte 1.13
eric901201
I've fixed already
shuliang
btw, <@U05FFAF4FC2> can you please forward the metadata service PR fix to avoid override default agent being overriden? when the flyte team at linkedin upgrade the flyte SDK, they can pay special care to that.
eric901201
yes, anytime, very excited the incoming journey
shuliang
Thanks A TON for staying up to help to resolve the outage! :heart: will ping here once the new data sensor works as well :slightly_smiling_face:
eric901201
please let me know if the new agent work in linkedin
eric901201
and checked the code by myself
shuliang
<@U05HLV2URT5> as you are oncall, do you want to try that?
eric901201
verified by Kevin
eric901201
sensor: defaultAgent
eric901201
YES
eric901201
100% correct answer for youo
eric901201
let me check the code now
eric901201
give me 1 min
eric901201
hi
eric901201
wati
eric901201
shuliang
like sensor: defaultAgent
?
shuliang
how to specify that?
shuliang
what if the sensor
is for defaultAgent?
eric901201
make sure you are having the right key value (relative position
eric901201
# supportedTaskTypes:
# - chatgpt
# - sensor
# - spark
# - default_task
# - custom_task
# - sensor
# - airflow
# By default, all the request will be sent to the default agent.
defaultAgent:
endpoint: "localhost:8000"
insecure: true
timeouts:
CreateTask: 100s
GetTask: 100s
defaultTimeout: 100s
agents:
custom_agent:
endpoint: "localhost:8001"
insecure: true
# defaultServiceConfig: '{"loadBalancingConfig": [{"round_robin":{}}]}'
timeouts:
ExecuteTaskSync: 300s
GetTask: 100s
defaultTimeout: 300s
agentForTaskTypes:
# It will override the default agent for custom_task, which means propeller will send the request to this agent.
- chatgpt: custom_agent
- airflow: custom_agent```
eric901201
THAT ME GIVE YOU AN EXAMPLE NOW
eric901201
USE THAT
eric901201
YES
shuliang
say if we are on the old version can not upgrade.
does the agentForTaskTypes
work?
eric901201
we add an agent watcher and fix bug about the routing mechanism
eric901201
eric901201
but maybe it will cause some error (just rollout back)
eric901201
it's ok to upgrade propeller only in my opinion
eric901201
upgrade to flyte 1.13.0
shuliang
currently the bug is causing us unable to roll out custom agent.
shuliang
the upgrade at LinkedIn will be slow and need more testing.
eric901201
we have some tiny bugs before
eric901201
use the latest one
shuliang
I think it probably not the latest propeller. cc <@U05HLV2URT5>
eric901201
are you using the latest flytepropeller?
shuliang
<@U05FFAF4FC2> We have observed some overridding problem
plugins:
agent-service:
defaultAgent:
endpoint: flyteagent:8000
insecure: true
agents:
aip-agent:
endpoint: <http://aipflyteagent.dlc-system.svc.kube.grid.linkedin.com:8000|aipflyteagent.dlc-system.svc.kube.grid.linkedin.com:8000>
insecure: true
supportedTaskTypes:
- sensor
- dataservicetask```
it looks like the request will be always sent to the `aip-agent` end point.
and we can not remove `sensor` because it is needed for the defaultAgent.
What’s the best way to do this?
eric901201
> Really?! are there recent changes that we are using the old version? I just misunderstand this, supported task type is in agent-service section, this is never changed. the order of the key in yaml can be different, but it's always the same.
shuliang
will try it out and keep you updated if any other issues. :slightly_smiling_face:
eric901201
thank you so much
shuliang
thanks a lot for hte confirmation. this helps me resolve some unknowns before I package and deploy my custom_agent separately!
eric901201
for example, you have 2 agent deployement, agent-service needs to know all supported task types,
so that propeller can check if we support the given supportedTaskTypes
from flytekit.
shuliang
got it!
eric901201
yes, but supported task types will not be used by defaultAgent
, it will be used by agent-service
shuliang
this is what we configured
shuliang
> supported task type is in agent-service
section
Really?! are there recent changes that we are using the old version?
eric901201
supported task type is in agent-service
section
eric901201
supportedTaskTypes:
- chatgpt
- sensor
- spark
- default_task
- custom_task
- sensor
- airflow
By default, all the request will be sent to the default agent.
defaultAgent:
endpoint: "localhost:8000"
insecure: true
timeouts:
CreateTask: 100s
GetTask: 100s
defaultTimeout: 100s
agents:
custom_agent:
endpoint: "localhost:8001"
insecure: true
# defaultServiceConfig: '{"loadBalancingConfig": [{"round_robin":{}}]}'
timeouts:
ExecuteTaskSync: 300s
GetTask: 100s
defaultTimeout: 300s```
eric901201
no
shuliang
wait, but supportedTaskTypes
in defaultAgent
section.
the defaultAgent would not have custom_sensor
eric901201
I think supportedTaskTypes will be looked like this, is this what you are asking?
eric901201
- sensor
- custom_sensor```
shuliang
I mean if there is other team configures the defaultAgent with the default sensor name…
eric901201
if you are using the latest version of propeller
eric901201
propeller will auto-update latest supported task types
eric901201
right now you don't need supportedTaskTypes
eric901201
sorry
eric901201
yes it will
eric901201
no it will not
shuliang
one last check point: what about for sensor agent?
The default name is sensor
: https://github.com/flyteorg/flytekit/blob/master/flytekit/sensor/base_sensor.py#L54
If I package the custom_agen with end point 8001 it supports custom_sensor type as well, will the configuration look like following?
defaultAgent:
endpoint: "localhost:8000"
insecure: true
timeouts:
CreateTask: 100s
GetTask: 100s
defaultTimeout: 100s
supportedTaskTypes:
- sensor <<<<<<<=========
agents:
custom_agent:
endpoint: "localhost:8001"
insecure: true
timeouts:
ExecuteTaskSync: 300s
GetTask: 100s
defaultTimeout: 300s
agentForTaskTypes:
- chatgpt: custom_agent
- airflow: custom_agent
- custom_sensor: custom_agent <<<<<======== ```
eric901201
> • but for any other types of task, it will still be sent to the default agent yes
eric901201
> for custom_task, propeller will be sent to the custom_agent, not the default agent. yes
eric901201
> It can be used in production, not just for canary deployment, correct? yes, there's company use that
eric901201
defaultAgent:
endpoint: "localhost:8000"
insecure: true
timeouts:
CreateTask: 100s
GetTask: 100s
defaultTimeout: 100s
agents:
custom_agent:
endpoint: "localhost:8001"
insecure: true
timeouts:
ExecuteTaskSync: 300s
GetTask: 100s
defaultTimeout: 300s
agentForTaskTypes:
- chatgpt: custom_agent
- airflow: custom_agent```
shuliang
Hi community,
as we are leveraging the agent framework to manage the custom agent in a decoupled way, we’d like to understand if propeller has the capabilities to talk to multiple agent end points?
for example,
In the propeller config map, people usually define one defaultAgent
plugins:
agent-service:
defaultAgent:
endpoint: customagent:8000
insecure: true```
But if we have the custom agent running serving different port,
```agent_service.yaml: |
plugins:
agent-service:
defaultAgent:
endpoint: customagent1:8000
insecure: true
customAgent1:
endpoint: customagent2:8001
...
customAgent2:
endpoint: customagent2:8002```