Description
With MindsDB, you can create and deploy AI agents that comprise AI models and customizable skills such as knowledge bases and text-to-SQL.
AI agents comprise of skills, such as text2sql and knowledge_base, and a conversational model.
-
Skills provide data resources to an agent, enabling it to answer questions about available data. Learn more about skills here. Learn more about knowledge bases here.
-
A conversational model (like OpenAI) from LangChain utilizes tools as skills to respond to user input. Users can customize these models with their own prompts to fit their use cases.
Syntax
Creating an agent
When creating an agent, you can use the default conversational model:
agent = server.agents.create('new_demo_agent')
Or specify model parameters:
agent = server.agents.create(
name='new_demo_agent',
model='gpt-4',
openai_api_key='OPENAI_API_KEY',
prompt_template='Hello! Ask a question: {{question}}',
temperature=0.0,
max_tokens=1000,
top_p=1.0,
top_k=0
)
Or use an existing model:
model = server.models.get('existing_model')
agent = server.agents.create('demo_agent', model)
Furthermore, you can list all existing agents, get agents by name, update agents, and delete agents.
agents = agents.list()
agent = agents.get('my_agent')
new_model = models.get('new_model')
agent.model_name = new_model.name
new_skill = skills.create('new_skill', 'sql', { 'tables': ['new_table'], 'database': 'new_database' })
updated_agent.skills.append(new_skill)
updated_agent = agents.update('my_agent', agent)
agents.delete('my_agent')
Assigning skills to an agent
You can add skills to an agent, providing it with data stored in databases, files, or webpages.
The retrieval skill is similar to knowledge bases.
agent.add_file('./file_name.txt', 'file content description')
agent.add_files(['./file_name.pdf', './file_name.pdf', ...], 'files content description')
agent.add_webpages(['example1.com', 'example2.com', ...], 'webpages content description')
The text2SQL skill retrieves relevant information from databases.
db = server.databases.create('datasource_name', 'engine_name', {'database': 'db.db_name'})
db = server.databases.get('datasource_name')
agent.add_database(db.name, ['table_name'], 'data description')
Querying an agent
Once you created an agent and assigned it a set of skills, you can ask questions related to your data.
question = 'ask a question'
answer = agent.completion([{'question': question, 'answer': None}])
print(answer.content)
Example
Here is a sample Python code to deploy an agent:
import mindsdb_sdk
con = mindsdb_sdk.connect()
agent = con.agents.create(f'new_demo_agent')
print('Adding Hooblyblob details...')
agent.add_file('./hooblyblob.txt', 'Details about the company Hooblyblob')
print('Adding rulebook details...')
agent.add_files(['./codenames-rulebook.pdf'], 'Rulebooks for various board games')
print('Adding MindsDB docs...')
agent.add_webpages(['docs.mindsdb.com'], 'Documentation for MindsDB')
print('Agent ready to use.')
while True:
print('Ask a question: ')
question = input()
answer = agent.completion([{'question': question, 'answer': None}])
print(answer.content)