Skip to content

Commit 18ff2d7

Browse files
committed
Merge branch 'main' of https://github.com/EuniAI/Prometheus into issueTesting
2 parents 6e6ada8 + 6b9bfb4 commit 18ff2d7

184 files changed

Lines changed: 5597 additions & 2404 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coveragerc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[run]
2+
omit =
3+
prometheus/script/*

.github/workflows/pytest_and_coverage.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ jobs:
1414
# Logging
1515
PROMETHEUS_LOGGING_LEVEL: DEBUG
1616

17+
# General settings
18+
PROMETHEUS_ENVIRONMENT: local
19+
PROMETHEUS_BACKEND_CORS_ORIGINS: "[\"*\"]"
20+
PROMETHEUS_ENABLE_AUTHENTICATION: false
21+
1722
# Neo4j settings
1823
PROMETHEUS_NEO4J_URI: bolt://localhost:7687
1924
PROMETHEUS_NEO4J_USERNAME: neo4j
@@ -38,16 +43,23 @@ jobs:
3843
PROMETHEUS_OPENAI_FORMAT_BASE_URL: https://api.openai.com/v1/chat/completions
3944

4045
# Model settings
41-
PROMETHEUS_MAX_INPUT_TOKENS: 64000
42-
PROMETHEUS_TEMPERATURE: 0.3
43-
PROMETHEUS_MAX_OUTPUT_TOKENS: 15000
46+
PROMETHEUS_ADVANCED_MODEL_MAX_INPUT_TOKENS: 64000
47+
PROMETHEUS_ADVANCED_MODEL_TEMPERATURE: 0.3
48+
PROMETHEUS_ADVANCED_MODEL_MAX_OUTPUT_TOKENS: 15000
49+
50+
PROMETHEUS_BASE_MODEL_MAX_INPUT_TOKENS: 64000
51+
PROMETHEUS_BASE_MODEL_TEMPERATURE: 0.3
52+
PROMETHEUS_BASE_MODEL_MAX_OUTPUT_TOKENS: 15000
4453

4554
# GitHub settings
4655
PROMETHEUS_GITHUB_ACCESS_TOKEN: github_access_token
4756

4857
# DATABASE settings
4958
PROMETHEUS_DATABASE_URL: postgresql://postgres:password@localhost:5432/postgres?sslmode=disable
5059

60+
# JWT settings
61+
PROMETHEUS_JWT_SECRET_KEY: your_jwt_secret_key
62+
5163
steps:
5264
- name: Check out code
5365
uses: actions/checkout@v4

README.md

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
<div align="center">
1010
<a href="https://github.com/Pantheon-temple/Prometheus/graphs/contributors"><img src="https://img.shields.io/github/contributors/Pantheon-temple/Prometheus?style=for-the-badge&color=blue" alt="Contributors"></a>
1111
<a href="https://github.com/Pantheon-temple/Prometheus/stargazers"><img src="https://img.shields.io/github/stars/Pantheon-temple/Prometheus?style=for-the-badge&color=blue" alt="Stargazers"></a>
12-
<a href="https://github.com/Pantheon-temple/Prometheus/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Pantheon-temple/Prometheus?style=for-the-badge&color=blue" alt="MIT License"></a>
12+
<a href="https://github.com/Pantheon-temple/Prometheus/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Pantheon-temple/Prometheus?style=for-the-badge&color=blue" alt="APACHE-2.0 License"></a>
13+
<a href="https://www.arxiv.org/abs/2507.19942"><img src="https://img.shields.io/badge/Paper-arXiv-red?style=for-the-badge&logo=arxiv" alt="Paper"></a>
1314
<br/>
1415
<a href="https://github.com/Pantheon-temple/Prometheus/blob/main/CREDITS.md"><img src="https://img.shields.io/badge/Project-Credits-blue?style=for-the-badge&color=FFE165&logo=github&logoColor=white" alt="Credits"></a>
1516
<br/>
@@ -36,11 +37,22 @@ governed by a state machine to ensure code quality through automated reviews, bu
3637
## 📊 Evaluation Results on SWE-bench Lite
3738

3839
<div align="center">
39-
<img src="./docs/static/images/barChart.png" alt="SWE-bench Lite Result" width="800"/>
40+
<img src="./docs/static/images/comparison_deepseek_July08.png" alt="SWE-bench Lite Result" width="800"/>
4041
<p><em>Success Rate Comparison across popular agents. Prometheus achieves 28.67%.</em></p>
4142
</div>
4243

4344

45+
```bibtex
46+
@misc{Prometheus-code-agent-2025,
47+
title={Prometheus: Unified Knowledge Graphs for Issue Resolution in Multilingual Codebases},
48+
author={Zimin Chen and Yue Pan and Siyu Lu and Jiayi Xu and Claire Le Goues and Martin Monperrus and He Ye},
49+
year={2025},
50+
eprint={2507.19942},
51+
archivePrefix={arXiv},
52+
primaryClass={cs.SE},
53+
url={https://arxiv.org/abs/2507.19942},
54+
}
55+
```
4456

4557
## ⚙️ Quick Start
4658

@@ -54,18 +66,34 @@ governed by a state machine to ensure code quality through automated reviews, bu
5466

5567
### 📦 Setup
5668

57-
1. Clone the repository:
69+
1. #### Clone the repository:
5870
```bash
5971
git clone https://github.com/Pantheon-temple/Prometheus.git
6072
cd Prometheus
6173
```
6274

63-
2. Copy the `example.env` file to `.env` and update it with your API keys and other required configurations:
75+
2. #### Copy the `example.env` file to `.env` and update it with your API keys and other required configurations:
76+
6477
```bash
6578
mv example.env .env
6679
```
6780

68-
3. Start the services using Docker Compose:
81+
> You need to provide a secure `JWT_SECRET_KEY` in the `.env` file.
82+
> You can generate a strong key by running the following command:
83+
84+
```bash
85+
python -m prometheus.script.generate_jwt_token
86+
```
87+
88+
This will print a secure token you can copy and paste into your `.env` file
89+
90+
3. #### Create the working directory to store logs and cloned repositories:
91+
92+
```bash
93+
mkdir working_dir
94+
```
95+
96+
4. #### Start the services using Docker Compose:
6997

7098
- **Linux (includes PostgreSQL)**:
7199
```bash
@@ -82,10 +110,27 @@ governed by a state machine to ensure code quality through automated reviews, bu
82110
docker-compose -f docker-compose.win_mac.yml up --build
83111
```
84112
85-
4. Access Prometheus:
86-
- Service: [http://localhost:9002](http://localhost:9002)
113+
5. #### Access Prometheus:
114+
- Service: [http://localhost:9002/v1.2](http://localhost:9002/v1.2)
87115
- OpenAPI Docs: [http://localhost:9002/docs](http://localhost:9002/docs)
88116
117+
6. #### Upload Your Codebase:
118+
119+
You can upload a GitHub repository to Prometheus using the following API endpoint:
120+
121+
- **Endpoint:** `POST /repository/upload/`
122+
- **Request Body:** JSON object matching the `UploadRepositoryRequest` schema (see [API Documents](http://127.0.0.1:9002/docs#/repository/repository-upload_github_repository))
123+
124+
This will clone the specified repository (defaulting to the latest commit on the main branch) into Prometheus.
125+
126+
7. #### 📝 Answer Repository Issues
127+
128+
You can ask Prometheus to analyze and answer a specific issue in your codebase using the `/issue/answer/` API endpoint.
129+
130+
- **Endpoint:** `POST /issue/answer/`
131+
- **Request Body:** JSON object matching the `IssueRequest` schema (see [API Documents](http://127.0.0.1:9002/docs#/issue/issue-answer_issue))
132+
- **Response:** Returns the generated patch, test/build results, and a summary response.
133+
89134
---
90135
91136
## 🗄️ Database Setup
@@ -126,39 +171,6 @@ Verify Neo4J at: [http://localhost:7474](http://localhost:7474)
126171

127172
---
128173

129-
## ⚙️ Configuration
130-
131-
Set the following variables in your `.env` file:
132-
133-
### 🔹 Neo4j
134-
135-
* `PROMETHEUS_NEO4J_URI`
136-
* `PROMETHEUS_NEO4J_USERNAME`
137-
* `PROMETHEUS_NEO4J_PASSWORD`
138-
139-
### 🔹 LLM Models
140-
141-
* `PROMETHEUS_ADVANCED_MODEL`
142-
* `PROMETHEUS_BASE_MODEL`
143-
* API Keys:
144-
145-
* `PROMETHEUS_OPENAI_FORMAT_API_KEY`
146-
* `PROMETHEUS_ANTHROPIC_API_KEY`
147-
* `PROMETHEUS_GEMINI_API_KEY`
148-
* Base URL for LLMs:
149-
150-
* `PROMETHEUS_OPENAI_FORMAT_BASE_URL`
151-
152-
### 🔹 Other Settings
153-
154-
* `PROMETHEUS_WORKING_DIRECTORY`
155-
* `PROMETHEUS_GITHUB_ACCESS_TOKEN`
156-
* `PROMETHEUS_KNOWLEDGE_GRAPH_MAX_AST_DEPTH`
157-
* `PROMETHEUS_NEO4J_BATCH_SIZE`
158-
* `PROMETHEUS_POSTGRES_URL`
159-
160-
---
161-
162174
## 🧪 Development
163175

164176
### Requirements

docker-compose.win_mac.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ services:
3636
# Logging
3737
- PROMETHEUS_LOGGING_LEVEL=${PROMETHEUS_LOGGING_LEVEL}
3838

39+
# General settings
40+
- PROMETHEUS_ENVIRONMENT=${PROMETHEUS_ENVIRONMENT}
41+
- PROMETHEUS_BACKEND_CORS_ORIGINS=${PROMETHEUS_BACKEND_CORS_ORIGINS}
42+
- PROMETHEUS_ENABLE_AUTHENTICATION=${PROMETHEUS_ENABLE_AUTHENTICATION}
43+
3944
# Neo4j settings
4045
- PROMETHEUS_NEO4J_URI=${PROMETHEUS_NEO4J_URI}
4146
- PROMETHEUS_NEO4J_USERNAME=${PROMETHEUS_NEO4J_USERNAME}
@@ -60,15 +65,19 @@ services:
6065
- PROMETHEUS_OPENAI_FORMAT_BASE_URL=${PROMETHEUS_OPENAI_FORMAT_BASE_URL}
6166

6267
# Model settings
63-
- PROMETHEUS_MAX_INPUT_TOKENS=${PROMETHEUS_MAX_INPUT_TOKENS}
64-
- PROMETHEUS_MAX_OUTPUT_TOKENS=${PROMETHEUS_MAX_OUTPUT_TOKENS}
65-
- PROMETHEUS_TEMPERATURE=${PROMETHEUS_TEMPERATURE}
68+
- PROMETHEUS_ADVANCED_MODEL_MAX_INPUT_TOKENS=${PROMETHEUS_ADVANCED_MODEL_MAX_INPUT_TOKENS}
69+
- PROMETHEUS_ADVANCED_MODEL_MAX_OUTPUT_TOKENS=${PROMETHEUS_ADVANCED_MODEL_MAX_OUTPUT_TOKENS}
70+
- PROMETHEUS_ADVANCED_MODEL_TEMPERATURE=${PROMETHEUS_ADVANCED_MODEL_TEMPERATURE}
6671

67-
# GitHub settings
68-
- PROMETHEUS_GITHUB_ACCESS_TOKEN=${PROMETHEUS_GITHUB_ACCESS_TOKEN}
72+
- PROMETHEUS_BASE_MODEL_MAX_INPUT_TOKENS=${PROMETHEUS_BASE_MODEL_MAX_INPUT_TOKENS}
73+
- PROMETHEUS_BASE_MODEL_MAX_OUTPUT_TOKENS=${PROMETHEUS_BASE_MODEL_MAX_OUTPUT_TOKENS}
74+
- PROMETHEUS_BASE_MODEL_TEMPERATURE=${PROMETHEUS_BASE_MODEL_TEMPERATURE}
6975

7076
# Database settings
7177
- PROMETHEUS_DATABASE_URL=${PROMETHEUS_DATABASE_URL}
78+
79+
# JWT settings
80+
- PROMETHEUS_JWT_SECRET_KEY=${PROMETHEUS_JWT_SECRET_KEY}
7281
networks:
7382
- prometheus_network
7483
volumes:

docker-compose.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ services:
5757
# Logging
5858
- PROMETHEUS_LOGGING_LEVEL=${PROMETHEUS_LOGGING_LEVEL}
5959

60+
# General settings
61+
- PROMETHEUS_ENVIRONMENT=${PROMETHEUS_ENVIRONMENT}
62+
- PROMETHEUS_BACKEND_CORS_ORIGINS=${PROMETHEUS_BACKEND_CORS_ORIGINS}
63+
- PROMETHEUS_ENABLE_AUTHENTICATION=${PROMETHEUS_ENABLE_AUTHENTICATION}
64+
6065
# Neo4j settings
6166
- PROMETHEUS_NEO4J_URI=${PROMETHEUS_NEO4J_URI}
6267
- PROMETHEUS_NEO4J_USERNAME=${PROMETHEUS_NEO4J_USERNAME}
@@ -81,15 +86,19 @@ services:
8186
- PROMETHEUS_OPENAI_FORMAT_BASE_URL=${PROMETHEUS_OPENAI_FORMAT_BASE_URL}
8287

8388
# Model settings
84-
- PROMETHEUS_MAX_INPUT_TOKENS=${PROMETHEUS_MAX_INPUT_TOKENS}
85-
- PROMETHEUS_MAX_OUTPUT_TOKENS=${PROMETHEUS_MAX_OUTPUT_TOKENS}
86-
- PROMETHEUS_TEMPERATURE=${PROMETHEUS_TEMPERATURE}
89+
- PROMETHEUS_ADVANCED_MODEL_MAX_INPUT_TOKENS=${PROMETHEUS_ADVANCED_MODEL_MAX_INPUT_TOKENS}
90+
- PROMETHEUS_ADVANCED_MODEL_MAX_OUTPUT_TOKENS=${PROMETHEUS_ADVANCED_MODEL_MAX_OUTPUT_TOKENS}
91+
- PROMETHEUS_ADVANCED_MODEL_TEMPERATURE=${PROMETHEUS_ADVANCED_MODEL_TEMPERATURE}
8792

88-
# GitHub settings
89-
- PROMETHEUS_GITHUB_ACCESS_TOKEN=${PROMETHEUS_GITHUB_ACCESS_TOKEN}
93+
- PROMETHEUS_BASE_MODEL_MAX_INPUT_TOKENS=${PROMETHEUS_BASE_MODEL_MAX_INPUT_TOKENS}
94+
- PROMETHEUS_BASE_MODEL_MAX_OUTPUT_TOKENS=${PROMETHEUS_BASE_MODEL_MAX_OUTPUT_TOKENS}
95+
- PROMETHEUS_BASE_MODEL_TEMPERATURE=${PROMETHEUS_BASE_MODEL_TEMPERATURE}
9096

9197
# Database settings
9298
- PROMETHEUS_DATABASE_URL=${PROMETHEUS_DATABASE_URL}
99+
100+
# JWT settings
101+
- PROMETHEUS_JWT_SECRET_KEY=${PROMETHEUS_JWT_SECRET_KEY}
93102
volumes:
94103
- .:/app
95104
- /var/run/docker.sock:/var/run/docker.sock

docs/Evaluation-log.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## This log tracks our evaluation results and associated costs.
22

3-
| Date | Version | Dataset | #Instance | Model |Resolved Rate | API Cost | Notes |
4-
|------------|----------|--------------|------------|----------------|-------------- |---------- |---------- |
5-
| 2025-07-08 | v1.0 |SWE-Bench Lite| 300 | DeepSeek V3 | 28.67% | $80.05 | - |
3+
| Date | Executed by | Version | Dataset | #Instance | Model | Resolved Rate | API Cost | Notes |
4+
|------------|-------------|---------|------------------------|-----------|-------------|---------------|----------|------------------------------------|
5+
| 2025-07-08 | Yue Pan | v1.0 | SWE-Bench Lite | 300 | DeepSeek V3 | 28.67% | $70.05 | initial version |
6+
| 2025-07-18 | Yue Pan | v1.0 | SWE-Bench Multilingual | 300 | DeepSeek V3 | 13.67% | $113.6 | initial version |
7+
| 2025-07-31 | Yue Pan | v1.1 | SWE-Bench Lite | 300 | GPT-4o | 30.00% | $1569.73 | context retrieval improved version |
270 KB
Loading

example.env

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
# Logging
22
PROMETHEUS_LOGGING_LEVEL=DEBUG
33

4+
# General settings
5+
PROMETHEUS_ENVIRONMENT=local
6+
PROMETHEUS_BACKEND_CORS_ORIGINS=["*"]
7+
PROMETHEUS_ENABLE_AUTHENTICATION=false
8+
9+
410
# Neo4j settings
5-
PROMETHEUS_NEO4J_URI=bolt://localhost:7687
11+
PROMETHEUS_NEO4J_URI=bolt://neo4j:7687
612
PROMETHEUS_NEO4J_USERNAME=neo4j
713
PROMETHEUS_NEO4J_PASSWORD=password
814
PROMETHEUS_NEO4J_BATCH_SIZE=1000
915

1016
# Knowledge Graph settings
11-
PROMETHEUS_WORKING_DIRECTORY=/tmp/
17+
PROMETHEUS_WORKING_DIRECTORY=working_dir/
1218
PROMETHEUS_KNOWLEDGE_GRAPH_MAX_AST_DEPTH=3
1319
PROMETHEUS_KNOWLEDGE_GRAPH_CHUNK_SIZE=10000
1420
PROMETHEUS_KNOWLEDGE_GRAPH_CHUNK_OVERLAP=1000
@@ -25,12 +31,16 @@ PROMETHEUS_OPENAI_FORMAT_BASE_URL=https://api.openai.com/v1
2531
PROMETHEUS_OPENAI_FORMAT_API_KEY=your_api_key
2632

2733
# Model settings
28-
PROMETHEUS_MAX_INPUT_TOKENS=64000
29-
PROMETHEUS_TEMPERATURE=0.3
30-
PROMETHEUS_MAX_OUTPUT_TOKENS=15000
34+
PROMETHEUS_ADVANCED_MODEL_MAX_INPUT_TOKENS=64000
35+
PROMETHEUS_ADVANCED_MODEL_TEMPERATURE=0.3
36+
PROMETHEUS_ADVANCED_MODEL_MAX_OUTPUT_TOKENS=15000
3137

32-
# GitHub settings
33-
PROMETHEUS_GITHUB_ACCESS_TOKEN=github_access_token
38+
PROMETHEUS_BASE_MODEL_MAX_INPUT_TOKENS=64000
39+
PROMETHEUS_BASE_MODEL_TEMPERATURE=0.3
40+
PROMETHEUS_BASE_MODEL_MAX_OUTPUT_TOKENS=15000
3441

3542
# Database settings
36-
PROMETHEUS_DATABASE_URL=postgresql://postgres:password@localhost:5432/postgres?sslmode=disable
43+
PROMETHEUS_DATABASE_URL=postgresql://postgres:password@postgres:5432/postgres?sslmode=disable
44+
45+
# JWT settings
46+
PROMETHEUS_JWT_SECRET_KEY=your_jwt_secret_key

0 commit comments

Comments
 (0)