|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Articles d’actualité sur les crypto-monnaies
Gérer efficacement le contexte avec le protocole de contexte du modèle
Apr 28, 2025 at 02:32 pm
Dans ce didacticiel, nous vous guidons à travers une implémentation pratique du Protocole de contexte du modèle (MCP) en construisant un ModelContextManager

```python
`` Python
import torch
Importer une torche
import numpy as np
Importer Numpy comme NP
import typing
Typage d'importation
from dataclasses import dataclass
à partir des classes de données importent la classe de données
import time
heure d'importation
import gc
Importer GC
from tqdm.notebook import tqdm
De TQDM.NOTEBOOK IMPORT TQDM
from sentence_transformers import SentenceTransformer
à partir de phrase_transformateurs Importer SentenTentransformateur
from transformers import GPT2Tokenizer, FLAN_T5ForConditionalGeneration, AutoTokenizer, AutoModelForSeq2SeqLM
De Transformers Import GPT2TOKIZIZE, Flan_T5ForConditionalGengeneration, AutotOKINIZIZE, AutomodelorseQ2Seqlm
import math
mathématiques d'importation
MAX_TOKENS = 8000
Max_tokens = 8000
DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'
Device = 'cuda' si torch.cuda.is_available () else 'CPU'
NUM_CHUNKS = 50
Num_chunks = 50
CHUNK_SIZE = 100
Chunk_size = 100
RELEVANCE_THRESHOLD = 0.1
Pertiance_threshold = 0,1
IMPORTANCE_FACTOR = 1.0
Importance_factor = 1.0
RECENCY_FACTOR = 0.5
Recence_factor = 0,5
VISUALIZE_CONTEXT = True
Visualize_Context = true
BATCH_SIZE = 32
Batch_size = 32
class ContextChunk(typing.NamedTuple):
Class contextChunk (typing.NamedTuple):
content: str
Contenu: str
embedding: np.array
intégrer: np.array
importance: float = 1.0
Importance: float = 1.0
timestamp: float = time.time()
Timestamp: float = time.time ()
metadata: dict = None
métadonnées: dict = aucun
def __post_init__(self):
def __post_init __ (self):
if self.metadata is None:
Si self.Metadata n'est pas nul:
self.metadata = {}
self.metadata = {}
class ModelContextManager:
classe ModelContextManager:
def __init__(self, context_chunks:typing.List[ContextChunk]=None, max_tokens:int=MAX_TOKENS, token_limit:int=0, gpt2_tokenizer:GPT2Tokenizer=None):
Def __init __ (self, context_chunks: typing.list [contextChunk] = Aucun, max_tokens: int = max_tokens, token_limit: int = 0, gpt2_tokizer: gpt2tokizer = non):
self.max_tokens = max_tokens
self.max_tokens = max_tokens
self.token_limit = token_limit
self.token_limit = token_limit
self.context_chunks = context_chunks or []
self.context_chunks = context_chunks ou []
self.used_tokens = 0
self.used_tokens = 0
self.last_chunk_index = 0
self.last_chunk_index = 0
self.total_chunks = 0
self.total_chunks = 0
if gpt2_tokenizer is None:
Si GPT2_TOKERIZIZE EST NEULLE:
self.gpt2_tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
self.gpt2_tokenizer = gpt2tokizer.from_pretrain ("gpt2")
else:
autre:
self.gpt2_tokenizer = gpt2_tokenizer
self.gpt2_tokizer = gpt2_tokizer
self.sentence_transformer = SentenceTransformer('all-mpnet-base-v2')
self.entence_transformrer = SentenTransformrer ('All-Mpnet-Base-V2')
def add_chunk(self, chunk_text:str, importance:float=1.0):
def add_chunk (self, chunk_text: str, importance: float = 1.0):
encoded_input = self.gpt2_tokenizer(chunk_text, return_tensors='pt')
encoded_input = self.gpt2_tokenizer (chunk_text, return_tensers = 'pt')
self.used_tokens += int(encoded_input[0].shape[1])
self.used_tokens + = int (encodé_input [0] .shape [1])
chunk_embedding = self.sentence_transformer.encode(chunk_text, batch_size=BATCH_SIZE)
chunk_embedding = self.sence_transformrer.encode (chunk_text, batch_size = batch_size)
new_chunk = ContextChunk(content=chunk_text, embedding=chunk_embedding, importance=importance)
new_chunk = contextChunk (content = chunk_text, embedding = chunk_emedding, importance = importance)
self.context_chunks.append(new_chunk)
self.context_chunks.append (new_chunk)
self.last_chunk_index += 1
self.last_chunk_index + = 1
self.total_chunks += 1
self.total_chunks + = 1
print(f"Added chunk with {int(encoded_input[0].shape[1])} tokens and importance {importance}. Total used tokens: {self.used_tokens}, total chunks: {self.total_chunks}")
print (f "Ajout de morceaux avec {int (encoded_input [0] .shape [1])} jetons et importance {importance}. Total utilisé des jetons: {self.used_tokens}, total des morceaux: {self.total_chunks}")
def optimize_context_window(self, query:str, min_chunks:int=3):
Def Optimize_context_window (self, requête: str, min_chunks: int = 3):
if len(self.context_chunks) <= min_chunks:
Si Len (self.context_chunks) <= min_chunks:
return []
retour []
query_embedding = self.sentence_transformer.encode(query, batch_size=BATCH_SIZE)
query_embedding = self.sence_transformrer.encode (query, batch_size = batch_size)
chunks_to_keep = []
chunks_to_keep = []
remaining_tokens = self.max_tokens - self.used_tokens
restant_tokens = self.max_tokens - self.used_tokens
if remaining_tokens < 0:
Si restant_tokens <0:
print("Warning: token limit exceeded by %s tokens" % -remaining_tokens)
Impression ("AVERTISSEMENT: limite de jetons dépassée par% S jetons"% -reming_tokens)
for i in range(min_chunks, len(self.context_chunks) - 1, -1):
pour i dans la gamme (min_chunks, Len (self.context_chunks) - 1, -1):
chunk = self.context_chunks[i]
chunk = self.context_chunks [i]
if i == len(self.context_chunks) - 1:
Si i == len (self.context_chunks) - 1:
chunks_to_keep.append(i)
chunks_to_keep.append (i)
continue
continuer
chunk_importance = chunk.importance * IMPORTANCE_FACTOR
chunk_importance = chunk.importance * importance_factor
chunk_recency = (time.time() - chunk.timestamp) * RECENCY_FACTOR
chunk_rence = (time.time () - chunk.timestamp) * recence_factor
relevant_scores = np.array([cosine_similarity(chunk.embedding, x) for x in query_embedding])
pertinent_scores = np.array ([cosinement_similarity (chunk.embedding, x) pour x dans query_embedding])
max_relevant_score = np.max(relevant_scores)
max_relevant_score = np.max (pertinent_scores)
total_score = chunk_importance + chunk_recency + max_relevant_score
total_score = chunk_importance + chunk_rence + max_relevant_score
if total_score >= RELEVANCE_THRESHOLD:
Si total_score> = pertinent_threshold:
encoded_input = self.gpt2_tokenizer(chunk.content, return_tensors='pt')
encodé_input = self.gpt2_tokenizer (chunk.content, return_tensers = 'pt')
chunk_token_count = int(encoded_input[0].shape[1])
chunk_token_count = int (encodé_input [0] .shape [1])
if remaining_tokens >= chunk_token_count:
Si restant_tokens> = chunk_token_count:
chunks_to_keep.append(i)
chunks_to_keep.append (i)
remaining_
restant_
Clause de non-responsabilité:info@kdj.com
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.
-
- Le jeton MORPHO plonge : décodage du prix de Morpho en baisse dans un contexte de nervosité plus large du marché
- Oct 30, 2026 at 11:55 am
- Le jeton Morpho (MORPHO) a connu une baisse de 7,78 %, atteignant 2,01 $, principalement en raison d'un marché de cryptographie prudent plutôt que de problèmes spécifiques au protocole, les transactions de lavage brouillant les mesures de volume.
-
- Quantum Leap : Ethereum L2 BB84 redéfinit la sécurité Web3 avec des transactions et des clés de session sans signature
- Oct 30, 2026 at 04:05 am
- BB84, un Ethereum Layer 2, est le pionnier d'une approche sans signature des transactions utilisant des chaînes de hachage, luttant contre les menaces quantiques et améliorant l'expérience utilisateur en réduisant les frais de gaz et en rationalisant les interactions avec les clés de session.
-
- Finastra CTO tire la sonnette d'alarme sur les escroqueries basées sur l'IA : la détection des escroqueries basées sur l'IA nécessite un processus plutôt que la perfection
- Oct 30, 2026 at 04:05 am
- Mike Stawchansky, directeur technique de Finastra, souligne la sophistication croissante des escroqueries basées sur l'IA et souligne la nécessité de disposer de processus robustes plutôt que d'outils de détection pour les combattre.
-
- Solana, Stratégie marketing des polygones : un plan révolutionnaire pour l'engagement Web3
- Oct 30, 2026 at 04:05 am
- La récente campagne « rivalité devenue partenariat » de Solana et Polygon présente une stratégie marketing révolutionnaire, tirant parti des traditions de la communauté pour créer des frictions, de l'anticipation et, finalement, une révélation puissante qui transcende les annonces de produits traditionnelles.
-
- Stanley Druckenmiller parie sur le trading 24h/24 et 7j/7 : le prochain investissement signale un changement dans l'accès au marché
- Oct 30, 2026 at 12:05 am
- Le dernier investissement de Stanley Druckenmiller dans Trade[XYZ] signale une évolution significative vers le trading de contrats à terme 24h/24 et 7j/7 aux États-Unis, remodelant potentiellement les stratégies d'investissement.
-
-
- Violation Keystone : une fuite de données client suscite des problèmes de sécurité du portefeuille matériel
- Oct 26, 2026 at 11:55 am
- La récente violation de données de Keystone, exposant les informations d'expédition des clients, souligne les risques de sécurité croissants pour les utilisateurs de portefeuilles matériels cryptographiques et suscite des questions critiques sur la conservation des données et la sécurité des utilisateurs.
-
- La politique de la Fed pèse sur le marché des crypto-monnaies alors que le secteur des actifs numériques envisage des décisions clés
- Oct 26, 2026 at 11:45 am
- L’anticipation des changements de politique de la Réserve fédérale et des bénéfices technologiques se fait sentir, ce qui aura un impact sur le marché des cryptomonnaies et le secteur des actifs numériques.
-
- Solana Company rejoint les entreprises stratégiques d'élite de Hong Kong, renforçant ainsi la présence de Web3
- Oct 26, 2026 at 11:35 am
- Solana Company (HSDT), cotée au Nasdaq, a été reconnue comme une entreprise stratégique à Hong Kong, signalant une démarche importante visant à consolider le rôle de la ville en tant que plaque tournante du Web3.

































