代码解释器为智能体提供了强大的代码执行和分析能力,支持多种编程语言的代码运行、调试和结果分析,让 AI 助手能够帮助用户解决编程问题。
功能特性
多语言支持
- Python(主要支持)
- JavaScript/Node.js
- R 语言
- SQL 查询
- Shell 脚本
- Markdown 渲染
代码执行能力
- 实时代码运行
- 错误诊断和调试
- 结果可视化
- 数据分析和处理
- 图表生成
安全沙箱环境
- 隔离执行环境
- 资源限制控制
- 安全权限管理
- 超时保护机制
基础用法
- Python 代码执行
- 数据分析任务
- 文件处理
Python 代码执行
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key="your_api_key")
# 基础代码执行
response = client.chat.completions.create(
model="glm-4.7",
messages=[
{
"role": "user",
"content": "请帮我计算斐波那契数列的前 10 项,并绘制图表"
}
],
tools=[
{
"type": "code_interpreter"
}
]
)
print(response.choices[0].message.content)
数据分析任务
# 数据分析示例
response = client.chat.completions.create(
model="glm-4.7",
messages=[
{
"role": "user",
"content": """
我有一组销售数据,请帮我分析:
sales_data = {
'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
'revenue': [10000, 12000, 11500, 13000, 14500, 16000],
'costs': [6000, 7000, 6800, 7500, 8200, 8800]
}
请计算每月利润,绘制收入、成本和利润的趋势图,并给出分析结论。
"""
}
],
tools=[
{
"type": "code_interpreter"
}
]
)
print(response.choices[0].message.content)
文件处理和分析
# 文件上传和分析
with open("data.csv", "rb") as file:
file_response = client.files.create(
file=file,
purpose="code-interpreter"
)
response = client.chat.completions.create(
model="glm-4.7",
messages=[
{
"role": "user",
"content": f"请分析这个CSV文件的数据,文件ID: {file_response.id}"
}
],
tools=[
{
"type": "code_interpreter"
}
]
)
print(response.choices[0].message.content)
高级应用场景
在使用代码解释器进行复杂数据分析时,请确保数据的安全性和隐私保护。
数据科学助手
数据科学助手完整实现
数据科学助手完整实现
class DataScienceAssistant:
def __init__(self, api_key):
self.client = ZhipuAiClient(api_key=api_key)
def analyze_dataset(self, data_description, analysis_requirements):
"""分析数据集"""
prompt = f"""
数据描述:{data_description}
分析需求:{analysis_requirements}
请执行以下数据分析任务:
1. 数据探索性分析(EDA)
2. 数据清洗和预处理
3. 统计分析和可视化
4. 模式识别和洞察发现
5. 生成分析报告
请使用 Python 代码实现,包含详细的注释和解释。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
def build_ml_model(self, problem_type, data_info, target_variable):
"""构建机器学习模型"""
prompt = f"""
问题类型:{problem_type}
数据信息:{data_info}
目标变量:{target_variable}
请构建一个机器学习模型:
1. 数据预处理和特征工程
2. 模型选择和训练
3. 模型评估和优化
4. 结果可视化
5. 模型解释和建议
请提供完整的 Python 代码实现。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
def create_dashboard(self, data_source, dashboard_requirements):
"""创建数据仪表板"""
prompt = f"""
数据源:{data_source}
仪表板需求:{dashboard_requirements}
请创建一个交互式数据仪表板:
1. 数据加载和处理
2. 关键指标计算
3. 多种图表类型展示
4. 交互式筛选功能
5. 响应式布局设计
使用 Python 的 Plotly 或 Streamlit 库实现。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
# 使用示例
assistant = DataScienceAssistant("your_api_key")
result = assistant.analyze_dataset(
"销售数据包含日期、产品、销量、价格等字段",
"分析销售趋势,识别热销产品,预测未来销量"
)
print(result)
算法学习助手
算法学习助手完整实现
算法学习助手完整实现
class AlgorithmTutor:
def __init__(self, api_key):
self.client = ZhipuAiClient(api_key=api_key)
def explain_algorithm(self, algorithm_name, difficulty_level="intermediate"):
"""解释算法原理"""
prompt = f"""
算法名称:{algorithm_name}
难度级别:{difficulty_level}
请详细解释这个算法:
1. 算法原理和思想
2. 时间和空间复杂度分析
3. Python 代码实现(带详细注释)
4. 实际应用场景
5. 优缺点分析
6. 相关算法比较
请提供可运行的代码示例和测试用例。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
def solve_coding_problem(self, problem_description, constraints=None):
"""解决编程问题"""
constraints_text = f"\n约束条件:{constraints}" if constraints else ""
prompt = f"""
问题描述:{problem_description}{constraints_text}
请解决这个编程问题:
1. 问题分析和解题思路
2. 算法设计和选择
3. 代码实现(多种解法)
4. 复杂度分析
5. 测试用例验证
6. 优化建议
请提供完整的 Python 解决方案。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
def visualize_algorithm(self, algorithm_name, input_data):
"""算法可视化"""
prompt = f"""
算法:{algorithm_name}
输入数据:{input_data}
请创建这个算法的可视化演示:
1. 算法执行步骤的动态展示
2. 数据结构变化过程
3. 关键操作的高亮显示
4. 性能指标的实时更新
5. 交互式参数调整
使用 matplotlib 或 plotly 创建动画效果。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
# 使用示例
algo_tutor = AlgorithmTutor("your_api_key")
explanation = algo_tutor.explain_algorithm("快速排序", "beginner")
print(explanation)
数据可视化专家
数据可视化专家完整实现
数据可视化专家完整实现
class DataVisualizationExpert:
def __init__(self, api_key):
self.client = ZhipuAiClient(api_key=api_key)
def create_chart(self, data_description, chart_type, customization=None):
"""创建图表"""
custom_text = f"\n定制要求:{customization}" if customization else ""
prompt = f"""
数据描述:{data_description}
图表类型:{chart_type}
{custom_text}
请创建专业的数据可视化图表:
1. 数据准备和处理
2. 图表设计和布局
3. 颜色搭配和样式
4. 交互功能添加
5. 标题和标签优化
6. 响应式设计
使用 matplotlib、seaborn 或 plotly 库实现。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
def create_infographic(self, topic, data_points, style="modern"):
"""创建信息图表"""
prompt = f"""
主题:{topic}
数据要点:{data_points}
风格:{style}
请创建一个信息图表:
1. 整体布局设计
2. 数据层次结构
3. 视觉元素搭配
4. 图标和插图
5. 文字排版
6. 色彩方案
使用 Python 的可视化库创建专业的信息图表。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
def analyze_chart_effectiveness(self, chart_description, target_audience):
"""分析图表效果"""
prompt = f"""
图表描述:{chart_description}
目标受众:{target_audience}
请分析图表的有效性:
1. 信息传达清晰度
2. 视觉吸引力
3. 数据准确性
4. 受众适应性
5. 改进建议
6. 替代方案
请提供详细的分析报告和优化建议。
"""
response = self.client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": prompt}],
tools=[{"type": "code_interpreter"}]
)
return response.choices[0].message.content
# 使用示例
viz_expert = DataVisualizationExpert("your_api_key")
chart = viz_expert.create_chart(
"公司过去5年的营收、利润和员工数量数据",
"组合图表(柱状图+折线图)",
"企业风格,蓝色主题,包含趋势分析"
)
print(chart)
高级功能
多步骤代码执行
多步骤代码执行完整实现
多步骤代码执行完整实现
class MultiStepCodeExecutor:
def __init__(self, api_key):
self.client = ZhipuAiClient(api_key=api_key)
self.conversation_history = []
def execute_step(self, step_description, code=None):
"""执行单个步骤"""
if code:
message_content = f"{step_description}\n\n```python\n{code}\n```"
else:
message_content = step_description
self.conversation_history.append({
"role": "user",
"content": message_content
})
response = self.client.chat.completions.create(
model="glm-4.7",
messages=self.conversation_history,
tools=[{"type": "code_interpreter"}]
)
assistant_message = response.choices[0].message
self.conversation_history.append({
"role": "assistant",
"content": assistant_message.content
})
return assistant_message.content
def execute_workflow(self, workflow_steps):
"""执行完整工作流"""
results = []
for i, step in enumerate(workflow_steps):
print(f"执行步骤 {i+1}: {step['description']}")
result = self.execute_step(
step['description'],
step.get('code')
)
results.append({
"step": i+1,
"description": step['description'],
"result": result
})
return results
def get_summary(self):
"""获取执行总结"""
summary_prompt = """
请总结整个代码执行过程:
1. 主要完成的任务
2. 关键结果和发现
3. 遇到的问题和解决方案
4. 最终输出和结论
5. 后续建议
"""
self.conversation_history.append({
"role": "user",
"content": summary_prompt
})
response = self.client.chat.completions.create(
model="glm-4.7",
messages=self.conversation_history
)
return response.choices[0].message.content
# 使用示例
executor = MultiStepCodeExecutor("your_api_key")
workflow = [
{
"description": "加载和探索数据集",
"code": """
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'date': pd.date_range('2023-01-01', periods=100),
'sales': np.random.normal(1000, 200, 100),
'marketing_spend': np.random.normal(500, 100, 100)
}
df = pd.DataFrame(data)
print(df.head())
print(df.info())
"""
},
{
"description": "数据清洗和预处理"
},
{
"description": "探索性数据分析"
},
{
"description": "建立预测模型"
},
{
"description": "模型评估和可视化"
}
]
results = executor.execute_workflow(workflow)
summary = executor.get_summary()
print("\n=== 执行总结 ===")
print(summary)
实践建议
代码组织和结构
模块化设计错误处理性能优化
# 将复杂任务分解为小的函数
def load_data():
pass
def process_data(data):
pass
def visualize_results(results):
pass
try:
result = risky_operation()
except SpecificException as e:
print(f"处理错误: {e}")
# 提供备选方案
# 使用向量化操作
import numpy as np
result = np.sum(array) # 而不是循环
安全考虑
- 输入验证:始终验证用户输入
- 资源限制:避免无限循环和内存泄漏
- 权限控制:不执行危险的系统操作
- 数据保护:不处理敏感信息
- 沙箱环境:利用安全的执行环境
- 代码审查:定期检查代码安全性
调试技巧
- 逐步执行:将复杂问题分解为小步骤
- 打印调试:在关键位置添加输出
- 异常捕获:使用try-except处理错误
- 单元测试:为每个函数编写测试
- 日志记录:使用 logging 模块记录执行过程
- 断点调试:在关键位置设置检查点
注意事项
执行限制
- 运行时间:单次执行有时间限制
- 内存使用:避免创建过大的数据结构
- 网络访问:受限的外部网络访问
- 文件操作:临时文件系统,执行后清理
- 计算资源:合理使用 CPU 和内存资源
- 并发限制:避免过多的并行操作
安全约束
- 系统调用:禁止危险的系统操作
- 文件访问:限制文件读写范围
- 网络请求:受控的网络访问
- 进程管理:不能启动外部进程
- 权限控制:严格的执行权限管理
- 数据隔离:确保数据安全和隐私
性能优化
- 算法选择:选择合适的算法和数据结构
- 内存管理:及时释放不需要的变量
- 并行处理:适当使用多线程或向量化
- 缓存策略:避免重复计算
- 代码优化:使用高效的编程模式
- 资源监控:实时监控资源使用情况
在编写代码时,建议先进行小规模测试,确认逻辑正确后再处理大数据集。同时,添加适当的注释和错误处理,提高代码的可读性和健壮性。
代码解释器在沙箱环境中运行,某些系统级操作和外部网络访问可能受限。请确保代码符合安全规范,避免执行可能造成安全风险的操作。