Compare commits
7 commits
b2aae15c79
...
f311399c2f
Author | SHA1 | Date | |
---|---|---|---|
f311399c2f | |||
7c1dec5c5e | |||
a58dc67caf | |||
aa15e98d29 | |||
6fca32451f | |||
d150f079b8 | |||
3ae568a23b |
8 changed files with 37 additions and 125 deletions
4
.github/workflows/bld.yml
vendored
4
.github/workflows/bld.yml
vendored
|
@ -15,12 +15,12 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: "zulu"
|
||||
java-version: ${{ matrix.java-version }}
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
<ID>LongMethod:Weather2.kt$Weather2.Companion$@JvmStatic @Throws(ModuleException::class) fun getWeather(query: String, apiKey: String?): List<Message></ID>
|
||||
<ID>LongParameterList:Comment.kt$Comment$( channel: String, cmd: String, entry: EntryLink, entryIndex: Int, commentIndex: Int, event: GenericMessageEvent )</ID>
|
||||
<ID>LongParameterList:EntryLink.kt$EntryLink$( // Link's comments val comments: MutableList<EntryComment> = mutableListOf(), // Tags/categories val tags: MutableList<SyndCategory> = mutableListOf(), // Channel var channel: String, // Creation date var date: Date = Calendar.getInstance().time, // Link's URL var link: String, // Author's login var login: String = "", // Author's nickname var nick: String, // Link's title var title: String )</ID>
|
||||
<ID>MagicNumber:ChatGpt.kt$ChatGpt$400</ID>
|
||||
<ID>MagicNumber:ChatGpt.kt$ChatGpt.Companion$200</ID>
|
||||
<ID>MagicNumber:ChatGpt.kt$ChatGpt.Companion$429</ID>
|
||||
<ID>MagicNumber:Comment.kt$Comment$3</ID>
|
||||
|
@ -20,7 +19,6 @@
|
|||
<ID>MagicNumber:CurrencyConverter.kt$CurrencyConverter.Companion$4</ID>
|
||||
<ID>MagicNumber:Cycle.kt$Cycle$10</ID>
|
||||
<ID>MagicNumber:Cycle.kt$Cycle$1000L</ID>
|
||||
<ID>MagicNumber:Gemini.kt$Gemini$400</ID>
|
||||
<ID>MagicNumber:Ignore.kt$Ignore$8</ID>
|
||||
<ID>MagicNumber:Info.kt$Info.Companion$30</ID>
|
||||
<ID>MagicNumber:Info.kt$Info.Companion$365</ID>
|
||||
|
|
110
config/pmd.xml
110
config/pmd.xml
|
@ -1,110 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<ruleset name="erik"
|
||||
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
|
||||
<description>Erik's Ruleset</description>
|
||||
<!-- BEST PRACTICES -->
|
||||
<rule ref="category/java/bestpractices.xml">
|
||||
<exclude name="AvoidPrintStackTrace"/>
|
||||
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
|
||||
<exclude name="JUnitTestContainsTooManyAsserts"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/bestpractices.xml/MissingOverride">
|
||||
<properties>
|
||||
<property name="violationSuppressXPath"
|
||||
value="//MethodDeclaration[@Name='hashCode' or @Name='equals' or @Name='toString']"/>
|
||||
</properties>
|
||||
</rule>
|
||||
|
||||
|
||||
<!-- CODE STYLE -->
|
||||
<rule ref="category/java/codestyle.xml">
|
||||
<exclude name="AtLeastOneConstructor"/>
|
||||
<exclude name="ClassNamingConventions"/>
|
||||
<exclude name="ConfusingTernary"/>
|
||||
<exclude name="CommentDefaultAccessModifier"/>
|
||||
<exclude name="DefaultPackage"/>
|
||||
<exclude name="FieldNamingConventions"/>
|
||||
<exclude name="LongVariable"/>
|
||||
<exclude name="OnlyOneReturn"/>
|
||||
<exclude name="PackageCase"/>
|
||||
<exclude name="ShortClassName"/>
|
||||
<exclude name="ShortMethodName"/>
|
||||
<exclude name="ShortVariable"/>
|
||||
<exclude name="UselessParentheses"/>
|
||||
<exclude name="UseUnderscoresInNumericLiterals"/>
|
||||
</rule>
|
||||
|
||||
<!-- DESIGN -->
|
||||
<rule ref="category/java/design.xml">
|
||||
<exclude name="AvoidCatchingGenericException"/>
|
||||
<exclude name="AvoidDeeplyNestedIfStmts"/>
|
||||
<exclude name="AvoidUncheckedExceptionsInSignatures"/>
|
||||
<exclude name="CognitiveComplexity"/>
|
||||
<exclude name="CyclomaticComplexity"/>
|
||||
<exclude name="ExcessiveClassLength"/>
|
||||
<exclude name="ExcessiveMethodLength"/>
|
||||
<exclude name="ExcessiveParameterList"/>
|
||||
<exclude name="ExcessivePublicCount"/>
|
||||
<exclude name="GodClass"/>
|
||||
<exclude name="LawOfDemeter"/>
|
||||
<exclude name="LoosePackageCoupling"/>
|
||||
<exclude name="NPathComplexity"/>
|
||||
<exclude name="NcssCount"/>
|
||||
<exclude name="TooManyFields"/>
|
||||
<exclude name="TooManyMethods"/>
|
||||
<exclude name="UseObjectForClearerAPI"/>
|
||||
</rule>
|
||||
|
||||
<!-- DOCUMENTATION -->
|
||||
<rule ref="category/java/documentation.xml">
|
||||
<exclude name="CommentRequired"/>
|
||||
<exclude name="CommentSize"/>
|
||||
</rule>
|
||||
|
||||
<!-- ERROR PRONE -->
|
||||
<rule ref="category/java/errorprone.xml">
|
||||
<exclude name="AssignmentInOperand"/>
|
||||
<exclude name="AvoidCatchingNPE"/>
|
||||
<exclude name="AvoidDuplicateLiterals"/>
|
||||
<exclude name="AvoidFieldNameMatchingMethodName"/>
|
||||
<exclude name="AvoidFieldNameMatchingTypeName"/>
|
||||
<exclude name="AvoidLiteralsInIfCondition"/>
|
||||
<exclude name="EmptyCatchBlock"/>
|
||||
<exclude name="NullAssignment"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/errorprone.xml/AssignmentInOperand">
|
||||
<properties>
|
||||
<property name="allowWhile" value="true"/>
|
||||
<property name="allowFor" value="true"/>
|
||||
<property name="allowIf" value="true"/>
|
||||
</properties>
|
||||
</rule>
|
||||
<rule ref="category/java/errorprone.xml/AvoidDuplicateLiterals">
|
||||
<properties>
|
||||
<property name="skipAnnotations" value="true"/>
|
||||
</properties>
|
||||
</rule>
|
||||
<rule ref="category/java/errorprone.xml/EmptyCatchBlock">
|
||||
<properties>
|
||||
<property name="allowExceptionNameRegex">
|
||||
<value>^ignore$</value>
|
||||
</property>
|
||||
</properties>
|
||||
</rule>
|
||||
|
||||
<!-- MULTITHREADING -->
|
||||
<rule ref="category/java/multithreading.xml">
|
||||
</rule>
|
||||
|
||||
<!-- PERFORMANCE -->
|
||||
<rule ref="category/java/performance.xml">
|
||||
</rule>
|
||||
|
||||
<!-- SECURITY -->
|
||||
<rule ref="category/java/security.xml">
|
||||
</rule>
|
||||
</ruleset>
|
Binary file not shown.
|
@ -1,9 +1,9 @@
|
|||
bld.downloadExtensionJavadoc=false
|
||||
bld.downloadExtensionSources=true
|
||||
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.3
|
||||
bld.extensions=com.uwyn.rife2:bld-generated-version:0.9.5
|
||||
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
|
||||
bld.extensions=com.uwyn.rife2:bld-generated-version:0.9.6-SNAPSHOT
|
||||
bld.extensions-kotlin=com.uwyn.rife2:bld-kotlin:0.9.3
|
||||
bld.extensions-detekt=com.uwyn.rife2:bld-detekt:0.9.2
|
||||
bld.extensions-detekt=com.uwyn.rife2:bld-detekt:0.9.4-SNAPSHOT
|
||||
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||
bld.downloadLocation=
|
||||
bld.sourceDirectories=
|
||||
|
|
|
@ -57,6 +57,8 @@ import static rife.bld.dependencies.Scope.compile;
|
|||
import static rife.bld.dependencies.Scope.test;
|
||||
|
||||
public class MobibotBuild extends Project {
|
||||
private static final String DETEKT_BASELINE = "config/detekt/baseline.xml";
|
||||
|
||||
public MobibotBuild() {
|
||||
pkg = "net.thauvin.erik.mobibot";
|
||||
name = "mobibot";
|
||||
|
@ -81,18 +83,18 @@ public class MobibotBuild extends Project {
|
|||
.include(dependency("com.github.pircbotx", "pircbotx", "2.3.1"))
|
||||
// Commons (mostly for PircBotX)
|
||||
.include(dependency("org.apache.commons", "commons-lang3", "3.14.0"))
|
||||
.include(dependency("org.apache.commons", "commons-text", "1.11.0"))
|
||||
.include(dependency("org.apache.commons", "commons-text", "1.12.0"))
|
||||
.include(dependency("commons-codec", "commons-codec", "1.16.1"))
|
||||
.include(dependency("commons-net", "commons-net", "3.10.0"))
|
||||
// Google
|
||||
.include(dependency("com.google.code.gson", "gson", "2.10.1"))
|
||||
.include(dependency("com.google.guava", "guava", "33.1.0-jre"))
|
||||
.include(dependency("com.google.cloud", "google-cloud-vertexai", version(0, 7, 0)))
|
||||
.include(dependency("com.google.cloud", "google-cloud-vertexai", "1.1.0"))
|
||||
// Kotlin
|
||||
.include(dependency("org.jetbrains.kotlinx", "kotlinx-coroutines-core", "1.8.0"))
|
||||
.include(dependency("org.jetbrains.kotlinx", "kotlinx-cli-jvm", "0.3.6"))
|
||||
// Logging
|
||||
.include(dependency("org.slf4j", "slf4j-api", "2.0.12"))
|
||||
.include(dependency("org.slf4j", "slf4j-api", "2.0.13"))
|
||||
.include(dependency("org.apache.logging.log4j", "log4j-api", log4j))
|
||||
.include(dependency("org.apache.logging.log4j", "log4j-core", log4j))
|
||||
.include(dependency("org.apache.logging.log4j", "log4j-slf4j2-impl", log4j))
|
||||
|
@ -107,7 +109,7 @@ public class MobibotBuild extends Project {
|
|||
.include(dependency("net.thauvin.erik", "cryptoprice", "1.0.3-SNAPSHOT"))
|
||||
.include(dependency("net.thauvin.erik", "jokeapi", "0.9.2-SNAPSHOT"))
|
||||
.include(dependency("net.thauvin.erik", "pinboard-poster", "1.1.2-SNAPSHOT"))
|
||||
.include(dependency("net.thauvin.erik.urlencoder", "urlencoder-lib-jvm", "1.4.0"));
|
||||
.include(dependency("net.thauvin.erik.urlencoder", "urlencoder-lib-jvm", "1.5.0"));
|
||||
scope(test)
|
||||
.include(dependency("com.willowtreeapps.assertk", "assertk-jvm", version(0, 28, 0)))
|
||||
.include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin))
|
||||
|
@ -162,7 +164,7 @@ public class MobibotBuild extends Project {
|
|||
public void detekt() throws ExitStatusException, IOException, InterruptedException {
|
||||
new DetektOperation()
|
||||
.fromProject(this)
|
||||
.baseline("config/detekt/baseline.xml")
|
||||
.baseline(DETEKT_BASELINE)
|
||||
.execute();
|
||||
}
|
||||
|
||||
|
@ -170,7 +172,7 @@ public class MobibotBuild extends Project {
|
|||
public void detektBaseline() throws ExitStatusException, IOException, InterruptedException {
|
||||
new DetektOperation()
|
||||
.fromProject(this)
|
||||
.baseline("config/detekt/baseline.xml")
|
||||
.baseline(DETEKT_BASELINE)
|
||||
.createBaseline(true)
|
||||
.execute();
|
||||
}
|
||||
|
|
|
@ -14,12 +14,12 @@ import java.time.ZoneId
|
|||
*/
|
||||
object ReleaseInfo {
|
||||
const val PROJECT = "mobibot"
|
||||
const val VERSION = "0.8.0-rc+20240315212330"
|
||||
const val VERSION = "0.8.0-rc+20240417230232"
|
||||
|
||||
@JvmField
|
||||
@Suppress("MagicNumber")
|
||||
val BUILD_DATE: LocalDateTime = LocalDateTime.ofInstant(
|
||||
Instant.ofEpochMilli(1710563010532L), ZoneId.systemDefault()
|
||||
Instant.ofEpochMilli(1713420152538L), ZoneId.systemDefault()
|
||||
)
|
||||
|
||||
const val WEBSITE = "https://mobitopia.org/mobibot/"
|
||||
|
|
|
@ -33,6 +33,8 @@ package net.thauvin.erik.mobibot.modules
|
|||
|
||||
import com.google.cloud.vertexai.VertexAI
|
||||
import com.google.cloud.vertexai.api.GenerationConfig
|
||||
import com.google.cloud.vertexai.api.HarmCategory
|
||||
import com.google.cloud.vertexai.api.SafetySetting
|
||||
import com.google.cloud.vertexai.generativeai.ChatSession
|
||||
import com.google.cloud.vertexai.generativeai.GenerativeModel
|
||||
import com.google.cloud.vertexai.generativeai.ResponseHandler
|
||||
|
@ -41,6 +43,7 @@ import net.thauvin.erik.mobibot.Utils.sendMessage
|
|||
import org.pircbotx.hooks.types.GenericMessageEvent
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
import java.util.*
|
||||
|
||||
|
||||
class Gemini : AbstractModule() {
|
||||
|
@ -109,9 +112,28 @@ class Gemini : AbstractModule() {
|
|||
try {
|
||||
VertexAI(projectId, location).use { vertexAI ->
|
||||
val generationConfig = GenerationConfig.newBuilder().setMaxOutputTokens(maxToken).build()
|
||||
val safetySettings = Arrays.asList(
|
||||
SafetySetting.newBuilder()
|
||||
.setCategory(HarmCategory.HARM_CATEGORY_HATE_SPEECH)
|
||||
.setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE)
|
||||
.build(),
|
||||
SafetySetting.newBuilder()
|
||||
.setCategory(HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT)
|
||||
.setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE)
|
||||
.build(),
|
||||
SafetySetting.newBuilder()
|
||||
.setCategory(HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT)
|
||||
.setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE)
|
||||
.build(),
|
||||
SafetySetting.newBuilder()
|
||||
.setCategory(HarmCategory.HARM_CATEGORY_HARASSMENT)
|
||||
.setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE)
|
||||
.build()
|
||||
)
|
||||
val model = GenerativeModel.Builder().setModelName("gemini-pro-vision")
|
||||
.setGenerationConfig(generationConfig)
|
||||
.setVertexAi(vertexAI).build()
|
||||
.withSafetySettings(safetySettings)
|
||||
val session = ChatSession(model)
|
||||
val response = session.sendMessage(query)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue