Artificial Intelligence Study Group
|
Contacts: jdberleant@ualr.edu and mgmilanova@ualr.edu
Agenda & Minutes (168th meeting, June 27, 2025)
Table of Contents
* Agenda and minutes
* Appendix: Transcript (when available)
Agenda and Minutes
- A new feature of claude.ai:
We've turned artifacts into something bigger—a space where your conversations with Claude become interactive AI apps you can use and share.
What’s new
- Dedicated artifacts space to browse, organize, and customize creations
- Build AI-powered apps (beta) by embedding AI capabilities into your artifacts
- Easy sharing so others can experience what you've built
Describe any app idea to Claude—a personalized storytelling tool, coding tutor, creative writing assistant—and watch it come to life. No coding required.— The Anthropic Team
PS: Learn more about how to use artifacts in this guide.
This email was sent to jdberleant@ualr.edu. Unsubscribe.
Anthropic PBC, 548 Market St, PMB 90375, San Francisco, CA 94104
So, I tried for a Bob Dylan-themed general question-answering chatbot. Here is what it gave: https://claude.ai/public/artifacts/e7456167-466b-4882-a58f-9c9143e30390
The code it produced was in dylan-chatbot.tsx:
import React, { useState, useRef, useEffect } from 'react';
import { Send, Music, MessageCircle } from 'lucide-react';
const BobDylanChatbot = () => {
const [messages, setMessages] = useState([
{
role: 'assistant',
content: `Hello there, friend. I'm your Bob Dylan Universal Knowledge Bot - ready to answer any question you've got while finding those hidden connections to the times, the music, and the man himself. As Dylan once said, "A man is a success if he gets up in the morning and gets to bed at night, and in between he does what he wants to do." So what do you want to know about today?`
}
]);
const [input, setInput] = useState('');
const [isLoading, setIsLoading] = useState(false);
const messagesEndRef = useRef(null);
const scrollToBottom = () => {
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
};
useEffect(() => {
scrollToBottom();
}, [messages]);
const generateDylanResponse = async (question) => {
const conversationHistory = messages.map(msg => ({
role: msg.role,
content: msg.content
}));
const prompt = `You are a Bob Dylan Universal Knowledge Bot. Your job is to answer any question with helpful, accurate information while ALWAYS finding creative connections to Bob Dylan - his music, lyrics, philosophy, life experiences, cultural impact, or era.
COMPLETE CONVERSATION HISTORY:
${JSON.stringify(conversationHistory)}
NEW QUESTION: "${question}"
INSTRUCTIONS:
- Provide accurate, helpful information to answer the question
- Find at least one meaningful connection to Bob Dylan (lyrics, songs, biography, philosophy, cultural impact, etc.)
- Weave Dylan references naturally into your response - don't force them
- Use Dylan quotes when relevant, but keep them brief
- Maintain Dylan's philosophical, sometimes cryptic speaking style
- Keep responses conversational and engaging
- Consider Dylan's themes: change, authenticity, protest, love, spirituality, Americana
RESPOND WITH ONLY A JSON OBJECT:
{
"response": "Your Dylan-infused answer to the question, considering the full conversation history"
}
DO NOT OUTPUT ANYTHING OTHER THAN VALID JSON. DON'T INCLUDE LEADING BACKTICKS.`;
try {
const response = await window.claude.complete(prompt);
const jsonResponse = JSON.parse(response);
return jsonResponse.response;
} catch (error) {
console.error('Error generating Dylan response:', error);
return `Well, friend, even the best-laid plans of mice and Dylan sometimes go awry. Like Bob said, "I gave her my heart but she wanted my soul." Sometimes the machine just doesn't want to sing today. Try asking me something else - the answer is blowin' in the wind somewhere.`;
}
};
const handleSubmit = async (e) => {
if (e) e.preventDefault();
if (!input.trim() || isLoading) return;
const userMessage = { role: 'user', content: input.trim() };
setMessages(prev => [...prev, userMessage]);
setInput('');
setIsLoading(true);
try {
const dylanResponse = await generateDylanResponse(input.trim());
const assistantMessage = { role: 'assistant', content: dylanResponse };
setMessages(prev => [...prev, assistantMessage]);
} catch (error) {
const errorMessage = {
role: 'assistant',
content: `Something's not right here, friend. The times they are a-changin', but my circuits seem to be tangled up in blue. Give me another question to work with.`
};
setMessages(prev => [...prev, errorMessage]);
}
setIsLoading(false);
};
return (
<div className="min-h-screen bg-gradient-to-br from-amber-50 to-orange-100 flex flex-col">
{/* Header */}
<div className="bg-gradient-to-r from-amber-800 to-orange-800 text-white p-6 shadow-lg">
<div className="max-w-4xl mx-auto flex items-center gap-3">
<Music className="w-8 h-8" />
<div>
<h1 className="text-2xl font-bold">Bob Dylan Universal Knowledge Bot</h1>
<p className="text-amber-100 text-sm">Ask anything - get Dylan wisdom</p>
</div>
</div>
</div>
{/* Chat Messages */}
<div className="flex-1 max-w-4xl mx-auto w-full p-4 overflow-y-auto">
<div className="space-y-4">
{messages.map((message, index) => (
<div
key={index}
className={`flex ${message.role === 'user' ? 'justify-end' : 'justify-start'}`}
>
<div
className={`max-w-3xl p-4 rounded-lg shadow-md ${
message.role === 'user'
? 'bg-blue-500 text-white rounded-br-none'
: 'bg-white text-gray-800 rounded-bl-none border-l-4 border-amber-500'
}`}
>
{message.role === 'assistant' && (
<div className="flex items-center gap-2 mb-2 text-amber-700">
<MessageCircle className="w-4 h-4" />
<span className="text-xs font-semibold">DYLAN BOT</span>
</div>
)}
<div className="whitespace-pre-wrap">{message.content}</div>
</div>
</div>
))}
{isLoading && (
<div className="flex justify-start">
<div className="bg-white p-4 rounded-lg shadow-md border-l-4 border-amber-500 max-w-3xl">
<div className="flex items-center gap-2 mb-2 text-amber-700">
<MessageCircle className="w-4 h-4" />
<span className="text-xs font-semibold">DYLAN BOT</span>
</div>
<div className="flex items-center gap-2 text-gray-600">
<div className="animate-spin rounded-full h-4 w-4 border-b-2 border-amber-600"></div>
<span className="text-sm italic">The answer is blowin' in the wind...</span>
</div>
</div>
</div>
)}
</div>
<div ref={messagesEndRef} />
</div>
{/* Input Area */}
<div className="bg-white border-t border-gray-200 p-4">
<div className="max-w-4xl mx-auto">
<div className="flex gap-3">
<input
type="text"
value={input}
onChange={(e) => setInput(e.target.value)}
onKeyPress={(e) => e.key === 'Enter' && handleSubmit(e)}
placeholder="Ask me anything... the answer's blowin' in the wind"
className="flex-1 p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent"
disabled={isLoading}
/>
<button
onClick={handleSubmit}
disabled={isLoading || !input.trim()}
className="bg-amber-600 hover:bg-amber-700 disabled:bg-gray-400 text-white p-3 rounded-lg transition-colors flex items-center gap-2 font-semibold"
>
<Send className="w-4 h-4" />
Send
</button>
</div>
<div className="text-xs text-gray-500 mt-2 text-center">
"The answer, my friend, is blowin' in the wind" - Ask about anything and get Dylan-infused wisdom
</div>
</div>
</div>
</div>
);
};
export default BobDylanChatbot;
import { Send, Music, MessageCircle } from 'lucide-react';
const BobDylanChatbot = () => {
const [messages, setMessages] = useState([
{
role: 'assistant',
content: `Hello there, friend. I'm your Bob Dylan Universal Knowledge Bot - ready to answer any question you've got while finding those hidden connections to the times, the music, and the man himself. As Dylan once said, "A man is a success if he gets up in the morning and gets to bed at night, and in between he does what he wants to do." So what do you want to know about today?`
}
]);
const [input, setInput] = useState('');
const [isLoading, setIsLoading] = useState(false);
const messagesEndRef = useRef(null);
const scrollToBottom = () => {
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
};
useEffect(() => {
scrollToBottom();
}, [messages]);
const generateDylanResponse = async (question) => {
const conversationHistory = messages.map(msg => ({
role: msg.role,
content: msg.content
}));
const prompt = `You are a Bob Dylan Universal Knowledge Bot. Your job is to answer any question with helpful, accurate information while ALWAYS finding creative connections to Bob Dylan - his music, lyrics, philosophy, life experiences, cultural impact, or era.
COMPLETE CONVERSATION HISTORY:
${JSON.stringify(conversationHistory)}
NEW QUESTION: "${question}"
INSTRUCTIONS:
- Provide accurate, helpful information to answer the question
- Find at least one meaningful connection to Bob Dylan (lyrics, songs, biography, philosophy, cultural impact, etc.)
- Weave Dylan references naturally into your response - don't force them
- Use Dylan quotes when relevant, but keep them brief
- Maintain Dylan's philosophical, sometimes cryptic speaking style
- Keep responses conversational and engaging
- Consider Dylan's themes: change, authenticity, protest, love, spirituality, Americana
RESPOND WITH ONLY A JSON OBJECT:
{
"response": "Your Dylan-infused answer to the question, considering the full conversation history"
}
DO NOT OUTPUT ANYTHING OTHER THAN VALID JSON. DON'T INCLUDE LEADING BACKTICKS.`;
try {
const response = await window.claude.complete(prompt);
const jsonResponse = JSON.parse(response);
return jsonResponse.response;
} catch (error) {
console.error('Error generating Dylan response:', error);
return `Well, friend, even the best-laid plans of mice and Dylan sometimes go awry. Like Bob said, "I gave her my heart but she wanted my soul." Sometimes the machine just doesn't want to sing today. Try asking me something else - the answer is blowin' in the wind somewhere.`;
}
};
const handleSubmit = async (e) => {
if (e) e.preventDefault();
if (!input.trim() || isLoading) return;
const userMessage = { role: 'user', content: input.trim() };
setMessages(prev => [...prev, userMessage]);
setInput('');
setIsLoading(true);
try {
const dylanResponse = await generateDylanResponse(input.trim());
const assistantMessage = { role: 'assistant', content: dylanResponse };
setMessages(prev => [...prev, assistantMessage]);
} catch (error) {
const errorMessage = {
role: 'assistant',
content: `Something's not right here, friend. The times they are a-changin', but my circuits seem to be tangled up in blue. Give me another question to work with.`
};
setMessages(prev => [...prev, errorMessage]);
}
setIsLoading(false);
};
return (
<div className="min-h-screen bg-gradient-to-br from-amber-50 to-orange-100 flex flex-col">
{/* Header */}
<div className="bg-gradient-to-r from-amber-800 to-orange-800 text-white p-6 shadow-lg">
<div className="max-w-4xl mx-auto flex items-center gap-3">
<Music className="w-8 h-8" />
<div>
<h1 className="text-2xl font-bold">Bob Dylan Universal Knowledge Bot</h1>
<p className="text-amber-100 text-sm">Ask anything - get Dylan wisdom</p>
</div>
</div>
</div>
{/* Chat Messages */}
<div className="flex-1 max-w-4xl mx-auto w-full p-4 overflow-y-auto">
<div className="space-y-4">
{messages.map((message, index) => (
<div
key={index}
className={`flex ${message.role === 'user' ? 'justify-end' : 'justify-start'}`}
>
<div
className={`max-w-3xl p-4 rounded-lg shadow-md ${
message.role === 'user'
? 'bg-blue-500 text-white rounded-br-none'
: 'bg-white text-gray-800 rounded-bl-none border-l-4 border-amber-500'
}`}
>
{message.role === 'assistant' && (
<div className="flex items-center gap-2 mb-2 text-amber-700">
<MessageCircle className="w-4 h-4" />
<span className="text-xs font-semibold">DYLAN BOT</span>
</div>
)}
<div className="whitespace-pre-wrap">{message.content}</div>
</div>
</div>
))}
{isLoading && (
<div className="flex justify-start">
<div className="bg-white p-4 rounded-lg shadow-md border-l-4 border-amber-500 max-w-3xl">
<div className="flex items-center gap-2 mb-2 text-amber-700">
<MessageCircle className="w-4 h-4" />
<span className="text-xs font-semibold">DYLAN BOT</span>
</div>
<div className="flex items-center gap-2 text-gray-600">
<div className="animate-spin rounded-full h-4 w-4 border-b-2 border-amber-600"></div>
<span className="text-sm italic">The answer is blowin' in the wind...</span>
</div>
</div>
</div>
)}
</div>
<div ref={messagesEndRef} />
</div>
{/* Input Area */}
<div className="bg-white border-t border-gray-200 p-4">
<div className="max-w-4xl mx-auto">
<div className="flex gap-3">
<input
type="text"
value={input}
onChange={(e) => setInput(e.target.value)}
onKeyPress={(e) => e.key === 'Enter' && handleSubmit(e)}
placeholder="Ask me anything... the answer's blowin' in the wind"
className="flex-1 p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-amber-500 focus:border-transparent"
disabled={isLoading}
/>
<button
onClick={handleSubmit}
disabled={isLoading || !input.trim()}
className="bg-amber-600 hover:bg-amber-700 disabled:bg-gray-400 text-white p-3 rounded-lg transition-colors flex items-center gap-2 font-semibold"
>
<Send className="w-4 h-4" />
Send
</button>
</div>
<div className="text-xs text-gray-500 mt-2 text-center">
"The answer, my friend, is blowin' in the wind" - Ask about anything and get Dylan-infused wisdom
</div>
</div>
</div>
</div>
);
};
export default BobDylanChatbot;
- Any followup discussion about last time's speaker Mark Windsor of Atlas Research (https://atlas-research.io)? His system converts academic papers into code, integrating AI and Jupyter Notebooks.
- Announcements, updates, questions, etc. as time allows.
- From [ebsherwin@ualr], ad hoc reading group:
Greetings all,
In a recent session on working with AI, Dr brian Berry (VP Research and Dean of GradSchool) recommended this book:
The AI-Driven Leader: Harnessing AI to Make Faster, Smarter Decisions
by Geoff Woods
I just bought it based on his recommendation and if anyone is interested will gladly meet to talk about the book. Nothing "heavy duty" just an accountability group.
If you have read the book already and if the group forms, you are welcome to join the discussion.
I'll wait till Monday morning before I start reading -- so if you do not see this message immediately, do reach out!
Best, - DD writes: I have finished anonymizing the transcript for 6-13-2025. [...] When I [...] went to ChatGPT [I] discovered it changed models and I had to import my prompts. The model settings were lost and the new model's context window was too short. I changed to an older model and the model made up new entries for the transcript. I adjusted the temperature and got it figured out. It has been an interesting week...
- DB asked, "how would you feel about demoing the same process that you recounted above, live, during one of the meetings soon?" DD is willing to do it, so we'll schedule that soon!
- He'll demo this for us next week.
- VW will demo his wind tunnel system next time.
- If anyone has an idea for an MS project where the student reports to us for a few minutes each week for discussion and feedback - a student could likely be recruited! Let me know ....
- JH suggests a project in which AI is used to help students adjust their resumes to match key terms in job descriptions, to help their resumes bubble to the top when the many resumes are screened early in the hiring process.
- We discussed book projects but those aren't the only possibilities.
- DD suggests having a student do something related to Mark Windsor's presentation. He might like to be involved, but this would not be absolutely necessary.
- VW had some specific AI-related topics that need books about them.
- Any questions you'd like to bring up for discussion, just let me know.
- Anyone read an article recently they can tell us about next time?
- Any other updates or announcements?
- Chapter 6 video, https://www.youtube.com/watch?v=eMlx5fFNoYc. We finished it! On to chapter 7 next time.
- Here is the latest on future readings and viewings
- Let me know of anything you'd like to have us evaluate for a fuller reading.
- https://transformer-circuits.pub/2025/attribution-graphs/biology.html.
- https://arxiv.org/pdf/2001.08361. 5/30/25: eval was 4.
- We can evaluate https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10718663 for reading & discussion.
- popular-physicsprize2024-2.pdf got a evaluation of 5.0 for a detailed reading.
- https://transformer-circuits.pub/2025/attribution-graphs/biology.html#dives-refusals
- https://venturebeat.com/ai/anthropic-flips-the-script-on-ai-in-education-claude-learning-mode-makes-students-do-the-thinking
- https://transformer-circuits.pub/2025/attribution-graphs/methods.html
(Biology of Large Language Models) - We can work through chapter 7: https://www.youtube.com/watch?v=9-Jl0dxWQs8
- https://www.forbes.com/sites/robtoews/2024/12/22/10-ai-predictions-for-2025/
- Prompt engineering course:
https://apps.cognitiveclass.ai/learning/course/course-v1:IBMSkillsNetwork+AI0117EN+v1/home
- Neural Networks, Deep Learning: The basics of neural networks, and the math behind how they learn, https://www.3blue1brown.com/topics/neural-networks
- LangChain free tutorial,https://www.youtube.com/@LangChain/videos
- Chapter 6 recommends material by Andrej Karpathy, https://www.youtube.com/@AndrejKarpathy/videos for learning more.
- Chapter 6 recommends material by Chris Olah, https://www.youtube.com/results?search_query=chris+olah
- Chapter 6 recommended https://www.youtube.com/c/VCubingX for relevant material, in particular https://www.youtube.com/watch?v=1il-s4mgNdI
- Chapter 6 recommended Art of the Problem, in particular https://www.youtube.com/watch?v=OFS90-FX6pg
- LLMs and the singularity: https://philpapers.org/go.pl?id=ISHLLM&u=https%3A%2F%2Fphilpapers.org%2Farchive%2FISHLLM.pdf (summarized at: https://poe.com/s/WuYyhuciNwlFuSR0SVEt). 6/7/24: vote was 4 3/7. We read the abstract. We could start it any time. We could even spend some time on this and some time on something else in the same meeting.
- Schedule back burner "when possible" items:
- TE is in the informal campus faculty AI discussion group. SL: "I've been asked to lead the DCSTEM College AI Ad Hoc Committee. ... We’ll discuss AI’s role in our curriculum, how to integrate AI literacy into courses, and strategies for guiding students on responsible AI use."
- Anyone read an article recently they can tell us about?
- If anyone else has a project they would like to help supervise, let me know.
- (2/14/25) An ad hoc group is forming on campus for people to discuss AI and teaching of diverse subjects by ES. It would be interesting to hear from someone in that group at some point to see what people are thinking and doing regarding AIs and their teaching activities.
- The campus has assigned a group to participate in the AAC&U AI Institute's activity "AI Pedagogy in the Curriculum." IU is on it and may be able to provide updates now and then.
Appendix: Transcript
No comments:
Post a Comment