forked from phoenix/litellm-mirror
usage - filter by keys
This commit is contained in:
parent
081e8732dc
commit
644738dafb
3 changed files with 34 additions and 2 deletions
|
@ -189,6 +189,7 @@ const CreateKeyPage = () => {
|
||||||
userRole={userRole}
|
userRole={userRole}
|
||||||
token={token}
|
token={token}
|
||||||
accessToken={accessToken}
|
accessToken={accessToken}
|
||||||
|
keys={keys}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -797,7 +797,7 @@ export const adminTopEndUsersCall = async (
|
||||||
|
|
||||||
let body = "";
|
let body = "";
|
||||||
if (keyToken) {
|
if (keyToken) {
|
||||||
body = JSON.stringify({ api_key: keyToken });
|
body = JSON.stringify({ api_key: keyToken, startTime: startTime, endTime: endTime });
|
||||||
} else {
|
} else {
|
||||||
body = JSON.stringify({ startTime: startTime, endTime: endTime });
|
body = JSON.stringify({ startTime: startTime, endTime: endTime });
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ interface UsagePageProps {
|
||||||
token: string | null;
|
token: string | null;
|
||||||
userRole: string | null;
|
userRole: string | null;
|
||||||
userID: string | null;
|
userID: string | null;
|
||||||
|
keys: any[] | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
type CustomTooltipTypeBar = {
|
type CustomTooltipTypeBar = {
|
||||||
|
@ -103,6 +104,7 @@ const UsagePage: React.FC<UsagePageProps> = ({
|
||||||
token,
|
token,
|
||||||
userRole,
|
userRole,
|
||||||
userID,
|
userID,
|
||||||
|
keys,
|
||||||
}) => {
|
}) => {
|
||||||
const currentDate = new Date();
|
const currentDate = new Date();
|
||||||
const [keySpendData, setKeySpendData] = useState<any[]>([]);
|
const [keySpendData, setKeySpendData] = useState<any[]>([]);
|
||||||
|
@ -113,6 +115,7 @@ const UsagePage: React.FC<UsagePageProps> = ({
|
||||||
const [topTagsData, setTopTagsData] = useState<any[]>([]);
|
const [topTagsData, setTopTagsData] = useState<any[]>([]);
|
||||||
const [uniqueTeamIds, setUniqueTeamIds] = useState<any[]>([]);
|
const [uniqueTeamIds, setUniqueTeamIds] = useState<any[]>([]);
|
||||||
const [totalSpendPerTeam, setTotalSpendPerTeam] = useState<any[]>([]);
|
const [totalSpendPerTeam, setTotalSpendPerTeam] = useState<any[]>([]);
|
||||||
|
const [selectedKeyID, setSelectedKeyID] = useState<string>("");
|
||||||
const [dateValue, setDateValue] = useState<DateRangePickerValue>({
|
const [dateValue, setDateValue] = useState<DateRangePickerValue>({
|
||||||
from: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
|
from: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
|
||||||
to: new Date(),
|
to: new Date(),
|
||||||
|
@ -132,14 +135,18 @@ const UsagePage: React.FC<UsagePageProps> = ({
|
||||||
let startTime = formatDate(firstDay);
|
let startTime = formatDate(firstDay);
|
||||||
let endTime = formatDate(lastDay);
|
let endTime = formatDate(lastDay);
|
||||||
|
|
||||||
|
console.log("keys in usage", keys);
|
||||||
|
|
||||||
const updateEndUserData = async (startTime: Date | undefined, endTime: Date | undefined) => {
|
const updateEndUserData = async (startTime: Date | undefined, endTime: Date | undefined) => {
|
||||||
if (!startTime || !endTime || !accessToken) {
|
if (!startTime || !endTime || !accessToken) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("selectedKeyID", selectedKeyID);
|
||||||
|
|
||||||
let newTopUserData = await adminTopEndUsersCall(
|
let newTopUserData = await adminTopEndUsersCall(
|
||||||
accessToken,
|
accessToken,
|
||||||
null,
|
selectedKeyID,
|
||||||
startTime.toISOString(),
|
startTime.toISOString(),
|
||||||
endTime.toISOString()
|
endTime.toISOString()
|
||||||
)
|
)
|
||||||
|
@ -376,6 +383,30 @@ const UsagePage: React.FC<UsagePageProps> = ({
|
||||||
updateEndUserData(value.from, value.to); // Call updateModelMetrics with the new date range
|
updateEndUserData(value.from, value.to); // Call updateModelMetrics with the new date range
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
<Text className="w-1/4 mr-2 text-right">Key</Text>
|
||||||
|
<Select defaultValue="1" className="w-3/4">
|
||||||
|
{keys?.map((key: any, index: number) => {
|
||||||
|
if (
|
||||||
|
key &&
|
||||||
|
key["key_alias"] !== null &&
|
||||||
|
key["key_alias"].length > 0
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
<SelectItem
|
||||||
|
key={index}
|
||||||
|
value={String(index)}
|
||||||
|
onClick={() => {
|
||||||
|
setSelectedKeyID(key["token"]);
|
||||||
|
updateEndUserData(dateValue.from, dateValue.to);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{key["key_alias"]}
|
||||||
|
</SelectItem>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return null; // Add this line to handle the case when the condition is not met
|
||||||
|
})}
|
||||||
|
</Select>
|
||||||
<Text className="mt-4">End Users of your LLM API calls. Tracked When a `user` param is passed in your LLM calls</Text>
|
<Text className="mt-4">End Users of your LLM API calls. Tracked When a `user` param is passed in your LLM calls</Text>
|
||||||
|
|
||||||
<Card className="mt-4">
|
<Card className="mt-4">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue