| Crates.io | kowalski-academic-agent |
| lib.rs | kowalski-academic-agent |
| version | 0.5.0 |
| created_at | 2025-06-28 22:05:52.273419+00 |
| updated_at | 2025-06-28 22:05:52.273419+00 |
| description | Kowalski Academic Agent: A Rust-based agent for interacting with Ollama models |
| homepage | https://github.com/yarenty/kowalski |
| repository | https://github.com/yarenty/kowalski |
| max_upload_size | |
| id | 1730160 |
| size | 118,963 |
A specialized AI agent for academic research and scholarly tasks, built on top of the Kowalski framework. The Academic Agent provides intelligent assistance for finding, analyzing, and processing academic papers, research documents, and scholarly content.
The Academic Agent is a sophisticated AI-powered research assistant that combines the power of large language models with specialized academic tools. It's designed to help researchers, students, and academics streamline their research workflow through intelligent paper discovery, analysis, and citation management.
The Academic Agent performs several key functions:
use kowalski_academic_agent::AcademicAgent;
use kowalski_core::config::Config;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize the academic agent
let config = Config::default();
let mut academic_agent = AcademicAgent::new(config).await?;
// Start a conversation
let conversation_id = academic_agent.start_conversation("llama3.2");
// Process a research paper
let paper_path = "path/to/research_paper.pdf";
let response = academic_agent
.chat_with_history(&conversation_id, paper_path, None)
.await?;
// Process streaming response...
Ok(())
}
use kowalski_core::role::{Audience, Preset, Role};
// Create a specialized role for computer science research
let role = Role::new(
"Computer Science Research Assistant",
"You are an expert in computer science research, specializing in machine learning and AI.",
)
.with_audience(Audience::new(
"Computer Science Researcher",
"You are speaking to a computer science researcher who needs detailed technical analysis.",
))
.with_preset(Preset::new(
"Technical Analysis",
"Focus on technical details, algorithms, and experimental results.",
));
// Use the role in paper analysis
let response = academic_agent
.chat_with_history(&conversation_id, paper_path, Some(role))
.await?;
// Search for academic papers
let search_results = academic_agent.search_papers("machine learning transformers").await?;
for result in search_results {
println!("Title: {}", result.title);
println!("Authors: {}", result.authors);
println!("Abstract: {}", result.abstract_text);
println!("URL: {}", result.url);
println!("---");
}
// Generate a citation for a reference
let citation = academic_agent.generate_citation("Attention Is All You Need").await?;
println!("Citation: {}", citation.citation);
println!("Format: {}", citation.format);
// Ask specific follow-up questions about the research
let follow_up = "What are the main contributions and limitations of this paper?";
let follow_up_response = academic_agent
.chat_with_history(&conversation_id, follow_up, None)
.await?;
The Academic Agent is designed with extensibility in mind and can be enhanced in several ways:
// Integrate with more academic search engines
pub struct ExtendedAcademicAgent {
agent: AcademicAgent,
arxiv_tool: ArxivTool,
pubmed_tool: PubMedTool,
ieee_tool: IEEETool,
acm_tool: ACMTool,
}
// Support for more document formats and advanced parsing
pub struct AdvancedAcademicAgent {
agent: AcademicAgent,
latex_parser: LatexParser,
word_processor: WordProcessor,
figure_extractor: FigureExtractor,
table_extractor: TableExtractor,
}
// Automated literature review and synthesis
pub struct LiteratureReviewAgent {
agent: AcademicAgent,
citation_analyzer: CitationAnalyzer,
trend_detector: TrendDetector,
gap_analyzer: GapAnalyzer,
synthesis_engine: SynthesisEngine,
}
// Multi-user research collaboration
pub struct CollaborativeAcademicAgent {
agent: AcademicAgent,
user_manager: UserManager,
annotation_system: AnnotationSystem,
discussion_forum: DiscussionForum,
version_control: VersionControl,
}
// Academic integrity tools
pub struct IntegrityAcademicAgent {
agent: AcademicAgent,
plagiarism_detector: PlagiarismDetector,
similarity_analyzer: SimilarityAnalyzer,
citation_checker: CitationChecker,
originality_scorer: OriginalityScorer,
}
// Complete research project management
pub struct WorkflowAcademicAgent {
agent: AcademicAgent,
project_manager: ProjectManager,
timeline_tracker: TimelineTracker,
milestone_monitor: MilestoneMonitor,
progress_reporter: ProgressReporter,
}
The Academic Agent can be easily extended to support additional academic databases, document formats, or specialized research tools.
TBD