当前位置: 首页 > news >正文

书生浦语第六期 L1-G2000

基本要求:获取书生 apikey 成功调用文本生成截图,天气服务运行成功截图

进阶要求:完成2、3 章节所有内容并贴运行成功截图

1.获取书生浦语大模型对应的apikey;

首先进入书生浦语apikey网站:https://internlm.intern-ai.org.cn/api/tokens

之后按照下面步骤进行

得到对应的apikey之后保存,API Token 只能复制一次,生成后请妥善保管。

2.配置开发机

开发机配置:

  • 镜像选择:Cuda11.7-conda

  • GPU 配置:10% A100

3.进入开发机之后配置环境

pip install openai

3.1文本生成

新建文件t2t.py

from openai import OpenAI
client = OpenAI(api_key="eyJ0eXxx",  # 此处传token,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)completion = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": "写一个关于独角兽的睡前故事,一句话就够了。"}]
)print(completion.choices[0].message.content)

运行结果

3.2分析图像输入

图像输入为url

from openai import OpenAIclient = OpenAI(api_key="eyJ0eXxx",  # 此处传token,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)response = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": [{"type": "text", "text": "图片里有什么?"},{"type": "image_url","image_url": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",},},],}],extra_body={"thinking_mode": True},
)print(response.choices[0].message.content)

图像输入为本地图像

import base64
from openai import OpenAIclient = OpenAI(api_key="eyJ0eXxx",  # 此处传token,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)
# Function to encode the image
def encode_image(image_path):with open(image_path, "rb") as image_file:return base64.b64encode(image_file.read()).decode("utf-8")# Path to your image
image_path = "/root/share/intern.jpg"# Getting the Base64 string
base64_image = encode_image(image_path)completion = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": [{ "type": "text", "text": "图片里有什么?" },{"type": "image_url","image_url": {"url": f"data:image/jpeg;base64,{base64_image}",},},],}],
)print(completion.choices[0].message.content)

运行结果

3.3模型实用工具

Openai格式调用

from openai import OpenAIclient = OpenAI(     api_key="sk-lYQQ6Qxx,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)
tools = [{"type": "function","function": {"name": "get_weather","description": "Get current temperature for a given location.","parameters": {"type": "object","properties": {"location": {"type": "string","description": "City and country e.g. Bogotá, Colombia"}},"required": ["location"],"additionalProperties": False},"strict": True}
}]completion = client.chat.completions.create(model="intern-s1",messages=[{"role": "user", "content": "What is the weather like in Paris today?"}],tools=tools
)print(completion.choices[0].message.tool_calls)

python原生调用

import requests
import json# API 配置
API_KEY = "eyJ0exxxxQ"
BASE_URL = "https://chat.intern-ai.org.cn/api/v1/"
ENDPOINT = f"{BASE_URL}chat/completions"# 定义天气查询工具
WEATHER_TOOLS = [{"type": "function","function": {"name": "get_weather","description": "获取指定城市或坐标的当前温度(摄氏度)","parameters": {"type": "object","properties": {"latitude": {"type": "number", "description": "纬度"},"longitude": {"type": "number", "description": "经度"}},"required": ["latitude", "longitude"],"additionalProperties": False},"strict": True}
}]def get_weather(latitude, longitude):"""获取指定坐标的天气信息Args:latitude: 纬度longitude: 经度Returns:当前温度(摄氏度)"""try:# 调用开放气象APIresponse = requests.get(f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}&current=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m")data = response.json()temperature = data['current']['temperature_2m']return f"{temperature}"except Exception as e:return f"获取天气信息时出错: {str(e)}"def make_api_request(messages, tools=None):"""发送API请求"""headers = {"Content-Type": "application/json","Authorization": f"Bearer {API_KEY}"}payload = {"model": "intern-s1","messages": messages,"temperature": 0.7}if tools:payload["tools"] = toolspayload["tool_choice"] = "auto"try:response = requests.post(ENDPOINT, headers=headers, json=payload, timeout=30)response.raise_for_status()return response.json()except requests.exceptions.RequestException as e:print(f"API请求失败: {e}")return Nonedef main():# 初始消息 - 巴黎的坐标messages = [{"role": "user", "content": "请查询当前北京的温度"}]print("🌤️ 正在查询天气...")# 第一轮API调用response = make_api_request(messages, WEATHER_TOOLS)if not response:returnassistant_message = response["choices"][0]["message"]# 检查工具调用if assistant_message.get("tool_calls"):print("🔧 执行工具调用...")print("tool_calls:",assistant_message.get("tool_calls"))messages.append(assistant_message)# 处理工具调用for tool_call in assistant_message["tool_calls"]:function_name = tool_call["function"]["name"]function_args = json.loads(tool_call["function"]["arguments"])tool_call_id = tool_call["id"]if function_name == "get_weather":latitude = function_args["latitude"]longitude = function_args["longitude"]weather_result = get_weather(latitude, longitude)print(f"温度查询结果: {weather_result}°C")# 添加工具结果tool_message = {"role": "tool", "content": weather_result,"tool_call_id": tool_call_id}messages.append(tool_message)# 第二轮API调用获取最终答案final_response = make_api_request(messages)if final_response:final_message = final_response["choices"][0]["message"]print(f"✅ 最终回答: {final_message['content']}")else:print(f"直接回答: {assistant_message.get('content', 'No content')}")if __name__ == "__main__":main()

3.4流式输出

stream=True,打开流式传输,体验如同网页端 Intern 吐字的感觉。

from openai import OpenAIclient = OpenAI(api_key="eyxxxx",base_url="https://chat.intern-ai.org.cn/api/v1/",
)stream = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": "Say '1 2 3 4 5 6 7' ten times fast.",},],stream=True,
)# 只打印逐字输出的内容
for chunk in stream:if chunk.choices[0].delta.content:print(chunk.choices[0].delta.content, end="", flush=True)  # 逐字输出,不换行

3.5开启模型的思考模式

通过extra_body={"thinking_mode": True}打开思考模式

from openai import OpenAI
client = OpenAI(api_key="eyxxA",  # 此处传token,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)completion = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": "写一个关于独角兽的睡前故事,一句话就够了。"}],extra_body={"thinking_mode": True,},
)print(completion.choices[0].message)

3.6科学能力

数学方面

from getpass import getpass
from openai import OpenAIapi_key = getpass("请输入 API Key(输入不可见):")
client = OpenAI(api_key=api_key,  # 此处传token,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)response = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": [{"type": "text", "text": "这道题选什么"},{"type": "image_url","image_url": {"url": "https://pic1.imgdb.cn/item/68d24759c5157e1a882b2505.jpg",},},],}],extra_body={"thinking_mode": True,},
)print(response.choices[0].message.content)

化学方面

from getpass import getpass
from openai import OpenAIapi_key = getpass("请输入 API Key(输入不可见):")
client = OpenAI(api_key=api_key,  # 此处传token,不带Bearerbase_url="https://chat.intern-ai.org.cn/api/v1/",
)response = client.chat.completions.create(model="intern-s1",messages=[{"role": "user","content": [{"type": "text", "text": "从左到右,给出图中反应物的化学式"},{"type": "image_url","image_url": {"url": "https://pic1.imgdb.cn/item/68d23c82c5157e1a882ad47f.png",},},],}],extra_body={"thinking_mode": True,"temperature": 0.7,"top_p": 1.0,"top_k": 50,"min_p": 0.0,},
)print(response.choices[0].message.content)

4.MCP

什么是MCP?

MCP(Model Control Protocol)是一种专为 AI 设计的协议(类别 USB-C接口转换器),其核心作用是扩充 AI 的能力。通过 MCP,AI 可以:

  • 获取外部数据

  • 操作文件系统

  • 调用各种服务接口

  • 实现复杂的工作流程

通过本教程,您将掌握如何让 Intern-S1 API 突破传统对话限制,实现以下核心功能:

  • 外部数据获取:连接并处理来自各种外部源的数据

  • 文件系统操作:具备完整的文件创建、读取、修改和删除能力,实现一个命令行版本的 cursor。

这是书生浦语配置的一些MCP项目

4.1环境准备

git clone https://github.com/fak111/mcp_tutorial.git
cd mcp_tutorial
bash install.sh

4.2配置API

cd mcp-client
cp .env.example .env

在vscode模式下进入.env文件输入你的apikey

4.3天气服务使用

cd mcp-client
source .venv/bin/activate
uv run client_interns1.py  ../mcp-server/weather/build/index.jsget_weather Beijing 

4.4文件服务系统

文件服务启动 uv run client_fixed.py arg1 arg2

其中

  • arg1:MCP 文件操作服务的路径

  • arg2:运行文件操作的工作目录路径

cd mcp-client
source .venv/bin/activate
uv run client_fixed.py ../mcp-server/filesystem/dist/index.js ../

http://www.dtcms.com/a/445549.html

相关文章:

  • AI大事记9:从 AlexNet 到 ChatGPT——深度学习的十年跃迁(上)
  • 删除无限递归文件夹
  • PyCharm 核心快捷键大全 (Windows版)
  • Android15 状态栏适配
  • 云原生微服务:Kubernetes+Istio 魔法学院实战指南
  • 做调研有哪些网站推广普通话手抄报内容大全资料
  • Vue.js 自定义指令
  • Vue中$nextTick的使用
  • 【Linux系列】并发世界的基石:透彻理解 Linux 进程 — 进程状态
  • 开源 C++ QT QML 开发(四)复杂控件--Listview
  • 我朋友是做卖网站的八戒影视大全
  • 智能体模式(Agent Mode)与深度研究(Deep Research)概念学习
  • AI vs. Machine Learning vs. Deep Learning vs. Neural Networks
  • 什么网站个人可以建设做企业门户网站都
  • 深度学习(十四):正则化与L2正则化
  • 深入浅出 ArkTS:构建响应式 HarmonyOS 应用的现代语法与实践
  • react生态
  • 深度学习周报(9.29~10.5)
  • 【开题答辩全过程】以 ssm框架的智能校园服务系统为例,包含答辩的问题和答案
  • [论文阅读] (42)ASC25 基于大语言模型的未知Web攻击威胁检测
  • 长宁网站设计wordpress极速版
  • Linux - 进程状态
  • 基于selenium库的爬虫实战:京东手机数据爬取
  • 少儿编程:课程体系和学习计划
  • 江苏盐城网站开发wordpress添加版块
  • 【Linux】安装配置mysql中出现的问题2
  • 《火锅梦想》,公交座椅广告文案“错位”的诗意
  • 买域名去哪个网站好学室内设计学费大概要多少钱
  • Linux系统编程-信号(黑马笔记)
  • # 深入理解Linux内核与用户态通信:Netlink机制实战