-
Notifications
You must be signed in to change notification settings - Fork 155
feat: Add GitHub integration with agent_prompts and github_components #1637
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
base: main
Are you sure you want to change the base?
Conversation
integrations/github/src/haystack_integrations/prompts/github/comment_tool.py
Outdated
Show resolved
Hide resolved
integrations/github/src/haystack_integrations/prompts/github/context.py
Outdated
Show resolved
Hide resolved
integrations/github/src/haystack_integrations/prompts/github/file_editor_tool.py
Outdated
Show resolved
Hide resolved
@@ -0,0 +1,21 @@ | |||
# github-haystack |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be good for us to add examples here in the Readme on how to use or to link to the tutorial/google colab for how to use.
Also another relevant detail I think is that these prompts were optimized using Anthropic models. Could be a useful thing for users to know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
google colab in the cookbook and some more examples in an integration page is what I imagine. The README's we currently don't fill out, for example see: https://pypi.org/project/opensearch-haystack/
Might be a good idea to change that and use a copy of the integrations page. I don't see a good reason to keep it empty but I would prefer a consistent solution. I'll talk to Bilge.
integrations/github/src/haystack_integrations/components/connectors/github/pr_creator.py
Outdated
Show resolved
Hide resolved
integrations/github/src/haystack_integrations/components/connectors/github/repo_viewer.py
Show resolved
Hide resolved
@julian-risch maybe a general comment on the structure here. I see that the prompts aren't being used within the library and I understand they will be used in a future tutorial/colab. I wonder then if it would be helpful to instead pre-assemble the tools within the repo so users could easily import the tools and immediately pass them to an Agent. What do you think? |
integrations/github/src/haystack_integrations/components/connectors/github/file_editor.py
Show resolved
Hide resolved
integrations/github/src/haystack_integrations/components/connectors/github/file_editor.py
Outdated
Show resolved
Hide resolved
def _get_request_headers(self) -> dict: | ||
""" | ||
Get headers with resolved token for the request. | ||
|
||
:return: Dictionary of headers including authorization if token is present | ||
""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this pattern for an incidental reason. By not putting the resolve of the Secret in the init method we allow users to not need to provide the secret until run time which is nice especially when running pipeline validation like in the deepset platform where the secrets are not available to the pipeline in the pipeline builder.
Could be nice to do this in the other components, basically to move the resolve_value() outside of the init method.
@julian-risch overall this looks really good! I mostly have minor comments and only one larger conceptual one about maybe providing users Tools directly instead of needing to compose them, themselves. I didn't comb through every line since there is a lot, but it's well tested so it's good to go from my perspective! We can always make quick updates to this if things arise and depending on usage. |
Related Issues
Related to Add GitHub integration with agent_prompts and github_components #1650
Related to Move Agent from experimental to main haystack-experimental#250
@sjrl brought up that one way to keep example files from the experimental Agent around is an integration chore: Remove Agent after Haystack 2.12 release haystack-experimental#263 (comment)
Proposed Changes:
The idea is to enable users to run the example notebook (or a version with updated imports) after having installed this new integration
How did you test it?
New unit tests and I ran all usage examples successfully with a test repo.
I haven't tested it with the notebook yet, which we would need to update first. (tracked by deepset-ai/haystack-cookbook#183 )
Notes for the reviewer
github_token
parameter toapi_key
for consistency with many other integrations.github_token: Optional[Secret] = None,
because they can work without any token while others useSecret.from_env_var("GITHUB_TOKEN")
. I suggest we useSecret.from_env_var("GITHUB_TOKEN", strict=False)
where we currently haveNone
as the default._get_headers
or_get_request_headers
or define headers inline. We could refactor that.Checklist
fix:
,feat:
,build:
,chore:
,ci:
,docs:
,style:
,refactor:
,perf:
,test:
.