-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add an Endpoint to get Agent Info #39
Comments
Another thing we discussed was Author, |
|
I believe we've settled on the following format for a route existing at {
"name": "My Agent",
"description": "General purpose agent.",
"version": "1.0.0",
"protocol": "1.0",
"github": "https://github.com/myagent/myagent",
"url": "https://myagent.com",
"docs": "https://myagent.com/docs",
"issues": "https://github.com/myagent/myagent/issues"
} |
Additionally to this schema we discussed having a |
We should also have the "schema_plugin" array that is the plugin system |
Here is the AgentInfo object I had been thinking of using for the spec: AgentInfo:
type: object
properties:
name:
description: Name of the agent.
type: string
example: My Agent
description:
description: Description of the agent.
type: string
example: My agent is the best agent.
version:
description: Version of the agent.
type: string
example: 1.0.0
protocol_version:
description: Version of the agent protocol.
type: string
example: 1
github:
description: GitHub repository of the agent.
type: string
example: 'https://github.com/AI-Engineers-Foundation/agent-protocol'
url:
description: URL of the agent.
type: string
example: 'https://my-agent.com'
docs:
description: Link to the documentation of the agent.
type: string
example: 'https://my-agent.com/docs'
issues:
description: Link to the issues of the agent.
type: string
example: 'https://github.com/AI-Engineers-Foundation/agent-protocol/issues'
config_options:
description: List of configuration options for the agent's tasks and steps. The config is a user-defined set of key/value pairs where the values are standard but the keys are not.
type: object
example: |-
{
"debug": {
"type": "boolean",
"default": false,
"description": "Whether to run the agent in debug mode."
},
"model": {
"type": "string",
"default": "gpt-4",
"description": "The model in which the agent's tasks should run."
}
}
additionalProperties:
type: object
properties:
type:
description: The type of the value.
type: string
enum:
- string
- integer
- float
- boolean
- list
- dict
default:
description: The default value of the config option.
type: string
description:
description: 'A description of the value with type, default value, and description.'
type: string
options:
description: A list of options for the config option.
type: array
items:
oneOf:
- type: string
- type: integer
- type: number
- type: boolean
- type: object
- type: array
items:
oneOf:
- type: string
- type: integer
- type: number
- type: boolean
- type: object
required:
- type
- default
- description
example: |-
{
"type": "string",
"default": "gpt-4",
"description": "Model for the agent's steps to use."
"options": ["gpt-4", "gpt-3.5-turbo", "gpt-3.5-turbo-16k"]
}
description: 'A description of the value with type, default value, and description.'
required:
- name
- version
- protocol_version
- config_options |
I like this proposal and agree with a need to standardize resource provision of some subset of Agent metadata. However, I could see a situation where some of the metadata proposed (i.e. agent name, github, issues, url, docs) is considered proprietary or sensitive and gated off to authenticated users. In that case, the Agent implementer would have to either 1) not conform to the spec with less than the entirety of Agent info provided, or 2) not be able to retrieve the entire metadata I think there is a happy middle ground where things like I also have a concern about the default assumption that Perhaps it would be worth discussing a limit to the protocol's provided top-level
I derived those thinking about a universally applicable protocol relevant to all of the below, and believe that a protocol that is follow-able will be one that supports all of these:
|
The proposed endpoint {
"name": "My Agent",
"description": "General purpose agent.",
"version": "1.0.0",
"protocol": "1.0",
"git": "https://myselfhostedgit.com/myagent/myagent",
"url": "https://myagent.com",
"docs": "https://myagent.com/docs",
"issues": "https://github.com/myagent/myagent/issues"
} +1 on not assuming that github is the only place where the code can exist. There is also a proposal to introduce the plugin system under the info endpoint. However, I would argue that the protocol does not need to be aware of the plugin. This means that the protocol does not depend on plugin and only plugin depends on the protocol. In any case there are no plugin scenarios brought out in the plugin issue thread except for auth. AuthI would propose to support auth in the core agent protocol. Let’s consider some common authorization methods:
In the real world there are alternative ways how the authorization token is sent. The 2 alternatives to header I see are in query parameter (?auth_token=mock_token) and in payload of POST query. As Agent Protocol has already GET and POST requests it would introduce unnecessary complexities and I would conclude that the most logical path forward would be to include the authorization in the header. By including the What is needed would be a way for the agent to say that the Authorization is needed. I would propose using the {
"config_options": {
"auth": {
"type": "string",
"default": null,
"description": "The authentication method to use.",
"options": [
null,
"basic",
"bearer_token",
"oauth2",
"jwt"
]
}
}
} For example if the agent is using JWT then the /info endpoint would return: {
"version": "1.0.0",
"protocol": "1.0",
"config_options": {
"auth": "jwt"
}
} PluginWhat we in https://agentwallet.ai/ are building is essentially a payment plugin. The most convenient way to accomplish paying to the Agent is through our platform. There would be no need for any protocol or agent code changes. The payment plugin would be in front of the agent protocol. This is my understanding how the plugins should work: “adds extra functionality to the existing software without modifying the existing software” Proposed solution to include Auth into Agent Protocol: #80 |
Really like this perspective. |
Discussed with the community:
|
@hackgoofer Thanks for the update!
What I imagine:
Maybe the community can share some ideas in here how they would like to use the Auth? |
My understanding is the three enclosed topics have all been green lit. I'm working with @jzanecook on the info and config object details and RFCs. @KasparPeterson would you mind writing up an RFC for auth? |
You could consider having info as a The payment pointer/wallet endpoint also specified an |
Is your feature request related to a problem? Please describe.
I've run into a case where I need to display different agent details as needed based on the agent.
Things such as:
Describe the solution you'd like
I would like a
GET
Endpoint Added to the protocol to request information about the agentDescribe alternatives you've considered
Requiring this information to be queriable outside the agent protocol is possible, but non linear
The text was updated successfully, but these errors were encountered: