Skip to content

Commit

Permalink
Add issue action
Browse files Browse the repository at this point in the history
Signed-off-by: Shuyang Xin <[email protected]>
  • Loading branch information
XinShuYang committed Dec 6, 2023
1 parent 74e02ae commit e6e4c95
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 0 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/issue_answer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: LangChain Issue Processor

on:
issues:
types: [opened, reopened]

jobs:
process-issue:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
pip install langchain openai
- name: Run process.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
SCRIPT_OUTPUT=$(python ai/issue_answer.py --github-token $GITHUB_TOKEN --openai-token $OPENAI_API_KEY --issue-number ${{ github.event.issue.number }})
echo "$SCRIPT_OUTPUT"
echo "SCRIPT_OUTPUT=$SCRIPT_OUTPUT" >> $GITHUB_ENV
echo "${{env.SCRIPT_OUTPUT}}"
- name: comment result
uses: actions/github-script@v5
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `${{env.SCRIPT_OUTPUT}}`,
});
37 changes: 37 additions & 0 deletions .github/workflows/issue_label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: LangChain Label Processor

on:
issues:
types: [opened, reopened]

jobs:
process-issue:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
pip install langchain openai
- name: Run process.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
LABEL_OUTPUT=bug,documentation
echo "LABEL_OUTPUT=$LABEL_OUTPUT" >> $GITHUB_ENV
- name: comment result
uses: actions/github-script@v5
with:
script: |
const labelsToAdd = '${{ env.LABEL_OUTPUT }}'.split(',');
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: labelsToAdd,
});
51 changes: 51 additions & 0 deletions ai/issue_answer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
from langchain.document_loaders.github import GitHubIssuesLoader
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnableParallel, RunnablePassthrough

import argparse

def parse_arguments():
parser = argparse.ArgumentParser(description="Your program description.")
parser.add_argument("--github-token", required=True, help="GitHub access token")
parser.add_argument("--openai-token", required=True, help="OpenAI API key")
parser.add_argument("--issue-number", required=True, help="Github Issue Number")
return parser.parse_args()

# Parse command line arguments
args = parse_arguments()

# Create an instance of the GitHubIssuesLoader class
loader = GitHubIssuesLoader(
repo="XinShuYang/antrea",
owner="XinShuYang",
access_token=args.github_token,
include_prs=False,
)

# Load the issues of the repository
issues = loader.load()

issue_data = []
# Print the title and body of each issue
for issue in issues:
if issue.metadata["number"] == args.issue_number :
issue_data.append({'title': issue.metadata['title'], 'body': issue.page_content})

template = """Answer the question based only on the following context:
{context}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI(model_name="gpt-3.5-turbo", openai_api_key=args.openai_token)
output_parser = StrOutputParser()
setup_and_retrieval = RunnableParallel(
{"context": RunnablePassthrough()}
)

chain = setup_and_retrieval | prompt | model | output_parser

result=chain.invoke(issue_data)

print(result)

0 comments on commit e6e4c95

Please sign in to comment.