@@ -312,6 +312,25 @@ export async function generateText({
312
312
console . debug ( "Received response from Ollama model." ) ;
313
313
break ;
314
314
315
+ case ModelProviderName . HEURIST : {
316
+ elizaLogger . debug ( "Initializing Heurist model." ) ;
317
+ const heurist = createOpenAI ( { apiKey : apiKey , baseURL : endpoint } ) ;
318
+
319
+ const { text : heuristResponse } = await aiGenerateText ( {
320
+ model : heurist . languageModel ( model ) ,
321
+ prompt : context ,
322
+ system : runtime . character . system ?? settings . SYSTEM_PROMPT ?? undefined ,
323
+ temperature : temperature ,
324
+ maxTokens : max_response_length ,
325
+ frequencyPenalty : frequency_penalty ,
326
+ presencePenalty : presence_penalty ,
327
+ } ) ;
328
+
329
+ response = heuristResponse ;
330
+ elizaLogger . debug ( "Received response from Heurist model." ) ;
331
+ break ;
332
+ }
333
+
315
334
default : {
316
335
const errorMessage = `Unsupported provider: ${ provider } ` ;
317
336
elizaLogger . error ( errorMessage ) ;
@@ -681,6 +700,12 @@ export const generateImage = async (
681
700
width : number ;
682
701
height : number ;
683
702
count ?: number ;
703
+ negativePrompt ?: string ;
704
+ numIterations ?: number ;
705
+ guidanceScale ?: number ;
706
+ seed ?: number ;
707
+ modelId ?: string ;
708
+ jobId ?: string ;
684
709
} ,
685
710
runtime : IAgentRuntime
686
711
) : Promise < {
@@ -696,14 +721,40 @@ export const generateImage = async (
696
721
697
722
const model = getModel ( runtime . character . modelProvider , ModelClass . IMAGE ) ;
698
723
const modelSettings = models [ runtime . character . modelProvider ] . imageSettings ;
699
- // some fallbacks for backwards compat, should remove in the future
700
- const apiKey =
701
- runtime . token ??
702
- runtime . getSetting ( "TOGETHER_API_KEY" ) ??
703
- runtime . getSetting ( "OPENAI_API_KEY" ) ;
704
-
724
+ const apiKey = runtime . token ?? runtime . getSetting ( "HEURIST_API_KEY" ) ?? runtime . getSetting ( "TOGETHER_API_KEY" ) ?? runtime . getSetting ( "OPENAI_API_KEY" ) ;
705
725
try {
706
- if ( runtime . character . modelProvider === ModelProviderName . LLAMACLOUD ) {
726
+ if ( runtime . character . modelProvider === ModelProviderName . HEURIST ) {
727
+ const response = await fetch ( 'http://sequencer.heurist.xyz/submit_job' , {
728
+ method : 'POST' ,
729
+ headers : {
730
+ 'Authorization' : `Bearer ${ apiKey } ` ,
731
+ 'Content-Type' : 'application/json' ,
732
+ } ,
733
+ body : JSON . stringify ( {
734
+ job_id : data . jobId || crypto . randomUUID ( ) ,
735
+ model_input : {
736
+ SD : {
737
+ prompt : data . prompt ,
738
+ neg_prompt : data . negativePrompt ,
739
+ num_iterations : data . numIterations || 20 ,
740
+ width : data . width || 512 ,
741
+ height : data . height || 512 ,
742
+ guidance_scale : data . guidanceScale ,
743
+ seed : data . seed || - 1 ,
744
+ }
745
+ } ,
746
+ model_id : data . modelId || 'PepeXL' , // Default to SD 1.5 if not specified
747
+ } )
748
+ } ) ;
749
+
750
+ if ( ! response . ok ) {
751
+ throw new Error ( `Heurist image generation failed: ${ response . statusText } ` ) ;
752
+ }
753
+
754
+ const result = await response . json ( ) ;
755
+ return { success : true , data : [ result . url ] } ;
756
+ }
757
+ else if ( runtime . character . modelProvider === ModelProviderName . LLAMACLOUD ) {
707
758
const together = new Together ( { apiKey : apiKey as string } ) ;
708
759
const response = await together . images . create ( {
709
760
model : "black-forest-labs/FLUX.1-schnell" ,
0 commit comments