Skip to content

Commit c5284c5

Browse files
authored
Merge pull request #26 from The-Nefarious-Developer/ollama
Ollama Implementation
2 parents 5591a65 + 80d0de3 commit c5284c5

File tree

106 files changed

+3754
-282
lines changed

Some content is hidden

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

106 files changed

+3754
-282
lines changed

.devcontainer/devcontainer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"version": "none",
88
"installMaven": "true",
99
"installGradle": "false"
10-
}
10+
},
11+
"ghcr.io/devcontainers/features/github-cli:1": {}
1112
}
1213

1314
}

.github/workflows/main.yaml

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ on:
1010

1111
permissions:
1212
contents: write
13+
pull-requests: write
1314

1415
jobs:
1516

1617
test:
1718
runs-on: ubuntu-latest
1819
if: "!contains(github.event.head_commit.message, 'skip ci')"
1920
steps:
21+
2022
- name: Checkout code
2123
uses: actions/checkout@v3
2224

@@ -35,6 +37,7 @@ jobs:
3537
if: "!contains(github.event.head_commit.message, 'skip ci') && github.ref == 'refs/heads/main'"
3638
runs-on: ubuntu-latest
3739
steps:
40+
3841
- name: Checkout code
3942
uses: actions/checkout@v3
4043

@@ -62,4 +65,67 @@ jobs:
6265
- name: Release
6366
env:
6467
GITHUB_TOKEN: ${{ secrets.NEFARIOUS_GITHUB_TOKEN }}
65-
run: chmod +x ./scripts/prepare-release.sh && npx semantic-release
68+
run: chmod +x ./scripts/prepare-release.sh && npx semantic-release
69+
70+
update-website:
71+
needs: release
72+
if: "!contains(github.event.head_commit.message, 'skip ci') && github.ref == 'refs/heads/main'"
73+
runs-on: ubuntu-latest
74+
env:
75+
GH_TOKEN: ${{ secrets.NEFARIOUS_GITHUB_TOKEN }}
76+
steps:
77+
78+
- name: Checkout code
79+
uses: actions/checkout@v3
80+
81+
- name: Get the latest release tag
82+
id: get_release
83+
run: |
84+
LATEST_TAG=$(gh release view --json tagName -q ".tagName")
85+
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
86+
87+
- name: Configure Git
88+
run: |
89+
git config --global user.name "nefarious-developer-bot"
90+
git config --global user.email "nefarious-developer-bot@users.noreply.github.com"
91+
92+
- name: Clone the target repository
93+
run: |
94+
git clone https://nefarious-developer-bot:${GH_TOKEN}@github.com/The-Nefarious-Developer/zjoule-website.git website-repo
95+
96+
- name: Create a new branch
97+
working-directory: website-repo
98+
run: |
99+
git checkout -b update-to-$LATEST_TAG
100+
101+
- name: Run the script to update the website
102+
working-directory: website-repo
103+
run: |
104+
chmod +x ../scripts/update-website.sh
105+
../scripts/update-website.sh $LATEST_TAG
106+
107+
- name: Commit the changes
108+
working-directory: website-repo
109+
run: |
110+
git add .
111+
git commit -m "feat: update to $LATEST_TAG"
112+
113+
- name: Push the changes
114+
working-directory: website-repo
115+
run: |
116+
git push https://nefarious-developer-bot:${GH_TOKEN}@github.com/The-Nefarious-Developer/zjoule-website.git update-to-$LATEST_TAG
117+
118+
- name: Create a pull request
119+
working-directory: website-repo
120+
run: |
121+
gh pr create \
122+
--title "Update to $LATEST_TAG" \
123+
--body "This PR updates the website to the latest release $LATEST_TAG." \
124+
--head update-to-$LATEST_TAG \
125+
--base main
126+
127+
- name: Automatically merge the pull request
128+
working-directory: website-repo
129+
run: |
130+
PR_URL=$(gh pr view update-to-$LATEST_TAG --json url -q ".url")
131+
gh pr merge $PR_URL --squash --admin --delete-branch

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
.DS_Store
22
.scannerwork
3-
docs/
3+
docs/
4+
website-repo/

.project

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,15 @@
1414
<natures>
1515
<nature>org.eclipse.m2e.core.maven2Nature</nature>
1616
</natures>
17+
<filteredResources>
18+
<filter>
19+
<id>1737318973879</id>
20+
<name></name>
21+
<type>30</type>
22+
<matcher>
23+
<id>org.eclipse.core.resources.regexFilterMatcher</id>
24+
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
25+
</matcher>
26+
</filter>
27+
</filteredResources>
1728
</projectDescription>

README.md

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66

77
[![Latest Test](https://github.com/The-Nefarious-Developer/zjoule/actions/workflows/main.yaml/badge.svg)](https://github.com/The-Nefarious-Developer/zjoule/actions/workflows/main.yaml)
88
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=The-Nefarious-Developer_zjoule&metric=alert_status&token=e2a58dc0706342532d8d14ae0badfe72fd08ff28)](https://sonarcloud.io/summary/new_code?id=The-Nefarious-Developer_zjoule)
9+
[![CodeQL](https://github.com/The-Nefarious-Developer/zjoule/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/The-Nefarious-Developer/zjoule/actions/workflows/github-code-scanning/codeql)
910
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
1011
[![Javadoc](https://img.shields.io/badge/JavaDoc-Online-green)](https://zjoule.com/v1.1.2/doc/)
1112
[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
1213

1314
</div>
1415

15-
**zJoule** is an Open Source AI assistant plugin for Eclipse designed to integrate the **SAP AI Core** Generative AI Hub foundation-models into your development environment.
16+
**zJoule** is an Open Source AI assistant plugin for Eclipse designed to integrate Generative AI into your development environment.
1617

1718
## Documentation Content
1819
- [Requirements](#requirements)
@@ -25,12 +26,25 @@
2526
- [License](#license)
2627

2728
## Requirements
28-
- SAP AI Core with the `Extended` service plan (for the Generative AI Hub enablement).
29+
- A local **Ollama** installation or **SAP AI Core** with the `Extended` service plan (for the Generative AI Hub enablement).
2930
- Eclipse 2024-09 (4.33.0) or latest. *Compatibility with older versions is not guaranteed.*
3031

3132
## Compatibility
3233

33-
The following table outlines the Generative AI models currently compatible with this plugin, as well as the next models that will soon be available:
34+
The following table outlines the Generative AI models currently compatible with this plugin, as well as the next models that will soon be available.
35+
36+
> **Privacy Information** <br>
37+
We know how privacy is important and ensure that all communication handled by the plugin is secure **is a must**. Here's how your data is managed:
38+
> - **Data Flow:** All communication facilitated by the plugin occurs exclusively between Eclipse and the SAP AI Core model APIs. No external intermediaries are involved.
39+
> - **Data Storage:** Any data processed or generated during plugin usage is stored locally within Eclipse's memory mechanism, ensuring it remains private and confined to your development environment. <br>
40+
>
41+
> By keeping all operations local and secure, the plugin should provide a trustworthy and seamless experience.
42+
43+
### Ollama
44+
45+
This plugin supports Ollama models through a local installation. For more information regarding the models available, please, check [this link]().
46+
47+
### SAP AI Core Generative AI Hub
3448

3549
| Executable ID | Model | Version | Compatibility |
3650
|---------------|--------------------------------|---------------------------|:------------------:|
@@ -52,16 +66,9 @@ LLM models that are not compatible may be selected during the login process; how
5266

5367
Additional model compatibilities may be introduced in the near future :)
5468

55-
> **Privacy Information** <br>
56-
We know how privacy is important and ensure that all communication handled by the plugin is secure **is a must**. Here's how your data is managed:
57-
> - **Data Flow:** All communication facilitated by the plugin occurs exclusively between Eclipse and the SAP AI Core model APIs. No external intermediaries are involved.
58-
> - **Data Storage:** Any data processed or generated during plugin usage is stored locally within Eclipse's memory mechanism, ensuring it remains private and confined to your development environment. <br>
59-
>
60-
> By keeping all operations local and secure, the plugin should provide a trustworthy and seamless experience.
61-
6269
## Motivation
6370

64-
The official Joule version for ADT is being rolled out exclusively for S/4HANA Private Cloud and SAP BTP, ABAP Environment at the end of Q1 of 2025. But don’t worry, this plugin was created to bridges the gap! It introduces an AI-powered chat interface that seamlessly connects other types of SAP systems to large language models (LLMs) through SAP AI Core.
71+
The official Joule version for ADT is being rolled out exclusively for S/4HANA Private Cloud and SAP BTP, ABAP Environment at the end of Q1 of 2025. But don’t worry, this plugin was created to bridges the gap! It introduces an AI-powered chat interface that seamlessly connects other types of SAP systems to large language models (LLMs) through different AI providers.
6572

6673
The idea is to open the door to integrate SAP ABAP development with new models and innovative features that could emerge from the expanding possibilities of AI.
6774

@@ -88,25 +95,54 @@ All from the cozy confines of your Eclipse ADT =)
8895
#### 7. Enhanced Development Experience:
8996
- Enable faster learning for beginners or new team members.
9097
- Provide a smoother workflow for experienced developers needing quick solutions.
98+
#### 8. Privacy and Security:
99+
- If using a local Ollama installation, all data processing occurs entirely on your machine, without any internet dependency.
100+
- This ensures maximum privacy, as sensitive code or project details never leave your local environment.
91101

92102
## Getting Started
93103

94104
1. Download and install **zJoule** in your Eclipse instance following the procedure described [right here](https://zjoule.com).
95105

106+
2. If the plugin view is not currently open in your Eclipse Editor, go to `Window > Show View > Other..` and search for **zJoule** inside the **ABAP Copilot** folder.
107+
108+
<div align="center">
109+
<img src="assets/view.png" alt="Intro GIF" width="200"/>
110+
</div>
111+
112+
3. Click on the authentication button (lock icon) at the top of the view and select the AI provider you want to work with.
113+
114+
<div align="center">
115+
<img src="assets/login_0.png" alt="Intro GIF" width="400"/>
116+
</div>
117+
118+
### Connecting to an Ollama local installation
96119

120+
4. Enter the localhost and port where your Ollama instance is available.
97121

98-
2. Login using your SAP AI Core `Service Key`.
122+
<div align="center">
123+
<img src="assets/login_ollama_1.png" alt="Intro GIF" width="400"/>
124+
</div>
125+
126+
5. Select the model you have installed and want to work with.
99127

100128
<div align="center">
101-
<img src="assets/login_1.png" alt="Intro GIF" width="400"/>
129+
<img src="assets/login_ollama_2.png" alt="Intro GIF" width="400"/>
130+
</div>
131+
132+
### Connecting to an SAP AI Core instance
133+
134+
4. Login using your SAP AI Core `Service Key`.
135+
136+
<div align="center">
137+
<img src="assets/login_sap_1.png" alt="Intro GIF" width="400"/>
102138
</div>
103139

104140
You can find it in the *Instances an Subscriptions* area of your SAP BTP subaccount.
105141

106-
3. Select the `resource group` and the `deployment` model you want to use.
142+
5. Select the `resource group` and the `deployment` model you want to use.
107143

108144
<div align="center">
109-
<img src="assets/login_2.png" alt="Intro GIF" width="400"/>
145+
<img src="assets/login_sap_2.png" alt="Intro GIF" width="400"/>
110146
</div>
111147

112148
Resource Groups are essentially a project workspace in the context of SAP AI Core, and contains all components a specific ML or AI solution might use to attend a specific requirement. [More Information](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/resource-groups?q=resource+groups).
@@ -160,16 +196,19 @@ Please follow the [contribution guidelines](CONTRIBUTING.md) for more details.
160196

161197
## Reference
162198

199+
[SAP Note: 3437766 (Availability of Generative AI Models)](https://me.sap.com/notes/3437766)
200+
163201
[How this project consumes generative AI models.](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/consume-generative-ai-models-using-sap-ai-core)
164202

165-
[SAP Note: 3437766 (Availability of Generative AI Models)](https://me.sap.com/notes/3437766)
203+
[The spinner "Ellipsis" is provided by loading.io](https://loading.io/icon/)
166204

167205
[zJoule - ABAP Copilot website repository](https://github.com/The-Nefarious-Developer/zjoule-website)
168206

169207
[zJoule - ABAP Copilot website](https://zjoule.com)
170208

171-
[The spinner "Ellipsis" is provided by loading.io](https://loading.io/icon/)
209+
[Ollama API documentation](https://github.com/ollama/ollama/blob/main/docs/api.md)
172210

211+
[Ollama website](https://ollama.com)
173212

174213
## License
175214
Copyright (c) 2024 Nicholas Coutinho Checan. <br />

assets/login_0.png

33 KB
Loading

assets/login_ollama_1.png

36 KB
Loading

assets/login_ollama_2.png

34.9 KB
Loading
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)