From 796271443c977d09c6d57d381e30f82d18a5e7a2 Mon Sep 17 00:00:00 2001 From: Zacharias Date: Sun, 8 Jun 2025 21:44:04 +0200 Subject: [PATCH] Added Wikipedia API wrapper GetWikiPegeText: - Fetches a Wikipedia wiki page WikipediaTool: - The base for this module, Initialise a Wiki instance and add the Wikipedia API endpoints --- WikipediaTool/build.gradle | 23 +++++++++++++ .../neuro/dock/wikipedia/GetWikiPageText.java | 33 +++++++++++++++++++ .../neuro/dock/wikipedia/WikipediaTool.java | 23 +++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 WikipediaTool/build.gradle create mode 100644 WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/GetWikiPageText.java create mode 100644 WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/WikipediaTool.java diff --git a/WikipediaTool/build.gradle b/WikipediaTool/build.gradle new file mode 100644 index 0000000..96f35b1 --- /dev/null +++ b/WikipediaTool/build.gradle @@ -0,0 +1,23 @@ +plugins { + id 'java' +} + +group = 'me.zacharias' +version = '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testImplementation platform('org.junit:junit-bom:5.10.0') + testImplementation 'org.junit.jupiter:junit-jupiter' + + implementation("io.github.fastily:jwiki:1.11.0") + + implementation project(":Core") +} + +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/GetWikiPageText.java b/WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/GetWikiPageText.java new file mode 100644 index 0000000..33f34d8 --- /dev/null +++ b/WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/GetWikiPageText.java @@ -0,0 +1,33 @@ +package me.zacharias.neuro.dock.wikipedia; + +import io.github.fastily.jwiki.core.Wiki; +import me.zacharias.chat.ollama.OllamaFunctionArgument; +import me.zacharias.chat.ollama.OllamaFunctionTool; +import me.zacharias.chat.ollama.OllamaPerameter; +import me.zacharias.chat.ollama.OllamaToolRespnce; + +public class GetWikiPageText extends OllamaFunctionTool { + Wiki wiki = WikipediaTool.wiki; + + @Override + public String name() { + return "get_wiki_page_text"; + } + + @Override + public String description() { + return "Gets the text of a Wikipedia page by its title."; + } + + @Override + public OllamaPerameter parameters() { + return OllamaPerameter.builder() + .addProperty("title", OllamaPerameter.OllamaPerameterBuilder.Type.STRING, "The title of the Wikipedia page to retrieve text from.", true) + .build(); + } + + @Override + public OllamaToolRespnce function(OllamaFunctionArgument... args) { + return new OllamaToolRespnce(name(), wiki.getPageText((String) args[0].value())); + } +} diff --git a/WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/WikipediaTool.java b/WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/WikipediaTool.java new file mode 100644 index 0000000..8d51e5e --- /dev/null +++ b/WikipediaTool/src/main/java/me/zacharias/neuro/dock/wikipedia/WikipediaTool.java @@ -0,0 +1,23 @@ +package me.zacharias.neuro.dock.wikipedia; + +import io.github.fastily.jwiki.core.Wiki; +import me.zacharias.chat.core.Core; +import me.zacharias.chat.ollama.OllamaFunctionTools; + +public class WikipediaTool { + private OllamaFunctionTools wikipediaToolsInstance; + + public static Wiki wiki = new Wiki.Builder() + //.withDomain("en.wikipedia.org") + .build(); + + public WikipediaTool() { + this.wikipediaToolsInstance = OllamaFunctionTools.builder() + .addTool(new GetWikiPageText(), Core.Source.INTERNAL) + .build(); + } + + public OllamaFunctionTools getWikipediaToolsInstance() { + return wikipediaToolsInstance; + } +}