① 用Python生成器写斐波拉契数列
核心知识点:yield
yield
的作用是:把一个函数变成一个"流水线生产器"。
这个函数可以"生产"一系列值,但不像普通函数那样一次性生产所有产品堆在你面前,而是 "生产一个,交货一个,等你需要下一个时再生产下一个" 。这能极大地节省内存,并允许处理无限的数据流。
参考答案:
python
def fibonacci_generator(n=None):
a, b = 1, 1
# 计数器,记录已经生成了多少个数
counter = 0
while True:
# 如果已经生成了 count 个数字,就返回
if n is not None and counter >= n:
return
yield a
a, b = b, a + b
counter += 1
if __name__ == '__main__':
print("前10个斐波那契数:")
fib_gen = fibonacci_generator(10)
for num in fib_gen:
print(num, end=' ')
print("\n\n无限生成示例(前5个):")
fib_gen_infinite = fibonacci_generator()
for i in range(5):
print(next(fib_gen_infinite), end=" ")
② 优化正方形和长方形的类
原题:请优化以下代码
python
class Rectangle():
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return 2 * self.length + 2 * self.width
class Square():
def __init__(self, length):
self.length = length
def area(self):
return self.length * self.length
def perimeter(self):
return 4 * self.length
参考答案:
python
# 我改了这个函数 -- 少做一次乘法
def perimeter(self):
return 2 * (self.length + self.width)
# 不想写父类来让Rectangle和Square继承了
③ 通过 LangChain 和 Deepseek 对话
python
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
# 创建聊天模型
llm = ChatOpenAI(
model='deepseek-chat',
api_key='your_api_key',
base_url="https://api.deepseek.com"
)
# 创建对话链
conversation = ConversationChain(
llm=llm,
memory=ConversationBufferMemory(),
verbose=True
)
# 开始对话
while True:
user_input = input('Human: ').strip()
# 设置退出指令
if user_input.lower() == 'exit':
print("再见!")
break
response = conversation.run(user_input)
print(f"AI: {response}")
④ 使用requests库发送POST请求
python
import requests
import json
url = 'https://yantu.com.cn'
headers = {
'Content-Type': 'application/json',
'User-Agent': '...'
}
# 注意这里的 body 是 <class 'dict'>
body = {
"name": "张三",
"age": 30,
"city": "北京"
}
# 将 dict 类型转化为 json 格式
data = json.dumps(body)
response = requests.post(url=url, headers=headers, data=data)
if response:
print(f"状态码: {response.status_code}")
print("响应内容:")
# 显示中文需要设置 ensure_ascii=False
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
else:
print(f"无法连接到{url}")
⑤ 谈谈你对对大模型的理解
-
LLM的基本概念 LLM 是一种基于人工智能的生成式AI系统,专门设计用于理解、生成和操作人类自然语言。这些模型通过在海量文本数据集上进行训练,能够掌握语言的复杂性,包括语法、语义等。
LLM 的主要特征有:
- 生成能力:与仅分析或分类文本的传统AI模型不同,LLM 能够创造全新的、连贯的文本内容。
- 规模庞大:LLM 的"大"主要体现在其参数数量上,这些参数是模型从训练数据中学到的权重和偏差。现代 LLM 如 Qwen 的参数可达1000B个。
-
LLM 的技术原理 LLM的核心架构基于Transformer网络。Transformer的核心创新是自注意力机制,该机制能够权衡句子中不同词语的重要性,使模型比之前的 RNN 或 LSTM 网络更高效地理解上下文。
- 训练过程与关键技术:LLM 的训练通常分为预训练阶段和微调两个阶段。词嵌入技术是 LLM 理解语言的关键。它将单词表示为多维向量,使语义相近的词语在向量空间中位置接近,从而捕捉语言的内在规律。
- 工作方式与局限性: LLM 本质上是概率预测引擎而非真正的"理解者"。它基于已有文本模式预测下一个最可能的词符,并不真正理解语言、事实或伦理道德。这一特性也导致了 LLM 会有幻觉现象、偏见问题、知识过时等局限。
-
LLM 的应用实践 LLM 正逐步深入专业领域,通过微调可适应法律、医疗等行业的特定需求.在医疗领域,LLM 可辅助疾病诊断;在金融领域,可帮助进行市场分析;在零售领域,则可提升客户互动体验。