fix(llm.gblib): Tool fix. More templates.

This commit is contained in:
Rodrigo Rodriguez 2024-09-01 21:46:55 -03:00
parent 95458a658d
commit 6aaae55a61
10 changed files with 66 additions and 14 deletions

View file

@ -71,7 +71,7 @@ import {
SQL_MYSQL_PROMPT SQL_MYSQL_PROMPT
} from 'langchain/chains/sql_db'; } from 'langchain/chains/sql_db';
import { GBUtil } from '../../../src/util.js'; import { GBUtil } from '../../../src/util.js';
import { z } from 'zod';
export interface CustomOutputParserFields {} export interface CustomOutputParserFields {}
export type ExpectedOutput = any; export type ExpectedOutput = any;
@ -475,7 +475,7 @@ export class ChatServices {
result = res.text ? res.text : res; result = res.text ? res.text : res;
sources = res.sources; sources = res.sources;
} else if (LLMMode === 'function') { } else if (LLMMode === 'tool') {
result = await conversationalToolChain.invoke({ result = await conversationalToolChain.invoke({
question question
}); });
@ -639,7 +639,8 @@ export class ChatServices {
if (funcObj) { if (funcObj) {
// TODO: Use ajv. // TODO: Use ajv.
funcObj.schema = eval(jsonSchemaToZod(funcObj.parameters));
funcObj.schema = jsonSchemaToZod(funcObj.parameters);
functions.push(new DynamicStructuredTool(funcObj)); functions.push(new DynamicStructuredTool(funcObj));
} }
} }

View file

@ -79,4 +79,32 @@ export class ImageServices {
return { localName, url }; return { localName, url };
} }
} }
public async getCaptionForImage({ pid, imageUrl }) {
const { min, user, params } = await DialogKeywords.getProcessInfo(pid);
const azureOpenAIKey = await min.core.getParam(min.instance, 'Azure Open AI Key', null);
const azureOpenAITextModel = 'gpt-4'; // Specify GPT-4 model here
const azureOpenAIEndpoint = await min.core.getParam(min.instance, 'Azure Open AI Endpoint', null);
if (azureOpenAIKey && azureOpenAITextModel && imageUrl) {
// Initialize the Azure OpenAI client
const client = new OpenAI({ apiKey: azureOpenAIKey, baseURL: azureOpenAIEndpoint });
// Construct a prompt to describe the image and generate a caption
const prompt = `Provide a descriptive caption for the image at the following URL: ${imageUrl}`;
// Generate a caption using GPT-4
const response = await client.completions.create({
model: azureOpenAITextModel,
prompt: prompt,
max_tokens: 50
});
const caption = response['data'].choices[0].text.trim();
GBLogEx.info(min, `Generated caption: ${caption}`);
return { caption };
}
}
} }

View file

@ -0,0 +1,7 @@
name,price
Product A, 230
Product B, 120
Product C, 180
Product D, 250
Product E, 200
Product F, 150
1 name price
2 Product A 230
3 Product B 120
4 Product C 180
5 Product D 250
6 Product E 200
7 Product F 150

View file

@ -1,5 +1,4 @@
PARAM image PARAM image AS STRING LIKE "https://server/image"
DESCRIPTION Returns the description of the image that was sent with the previous user message. This tool is automatically invoked if a user uploads an image. DESCRIPTION Returns the description of the image that was sent with the previous user message. This tool is automatically invoked if a user uploads an image.
DEBUG "Hello"

View file

@ -1,6 +1,4 @@
PARAM prompt as STRING LIKE "Generate a cat."
PARAM prompt
DESCRIPTION Calls an artificial intelligence model to create an image. `prompt` parameter is a text description of the desired image. DESCRIPTION Calls an artificial intelligence model to create an image. `prompt` parameter is a text description of the desired image.
FIND
RETURN "https://"

View file

@ -0,0 +1,6 @@
PARAM product AS string LIKE "Product A"
DESCRIPTION "Returns the price of the given product."
product = FIND "products.csv", "name LIKE ${product}"
price = product.price
RETURN price

View file

@ -1,2 +1,4 @@
PARAM query PARAM query AS STRING LIKE "How is to code?"
DESCRIPTION Returns search results in a JSON string. `query` parameter is a well-formed web search query.- `search_web(query: str) -> str` returns Bing search results in a JSON string. `query` parameter is a well-formed web search query. DESCRIPTION Returns search results in a JSON string. `query` parameter is a well-formed web search query.- `search_web(query: str) -> str` returns Bing search results in a JSON string. `query` parameter is a well-formed web search query.
DEBUG "{}"

View file

@ -0,0 +1,9 @@
BEGIN SYSTEM PROMPT
There exist some helpful predefined internal tools which can help me by
extending my functionalities or get me helpful information.
These tools **should** be abstracted away from the user.
These tools can be invoked only by me before I respond to a user.
Here is the list of my internal tools:
END SYSTEM PROMPT

View file

@ -0,0 +1,2 @@
name,value
Answer Mode,tool
1 name value
2 Answer Mode tool

View file

@ -5,7 +5,7 @@ pass = "*************"
o = get "https://oooooooooo" o = get "https://oooooooooo"
# Criar a legenda para o post # Criar a legenda para o post
caption = REWRITE "Crie um post sobre Hotmart e seus produtos, no estilo dica do dia, incluindo 10 hashtags, estilo Instagram o texto! Importante, retorne só a saída de texto pronta" caption = REWRITE "Crie um post sobre produtos, no estilo dica do dia, incluindo 10 hashtags, estilo Instagram o texto! Importante, retorne só a saída de texto pronta"
# Obter uma imagem relacionada ao conteúdo # Obter uma imagem relacionada ao conteúdo
image = GET IMAGE caption image = GET IMAGE caption